2015-04-17 15:44:50,961 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-17 15:44:52,366 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-17 15:44:59,883 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-17 15:44:59,884 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-17 15:45:16,617 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-17 15:45:27,744 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-17 15:45:28,059 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-17 15:45:28,083 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-04-17 15:45:28,083 INFO  io.prediction.tools.console.App$ [main] -       Name: TextApp1
2015-04-17 15:45:28,084 INFO  io.prediction.tools.console.App$ [main] -         ID: 5
2015-04-17 15:45:28,084 INFO  io.prediction.tools.console.App$ [main] - Access Key: IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK
2015-04-17 16:00:13,198 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-17 16:00:13,200 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-17 16:00:13,201 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-17 16:00:13,201 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-17 16:00:15,699 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-17 16:00:26,782 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-17 16:00:32,086 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-17 16:00:32,227 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-17 16:00:37,570 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-17 16:00:37,672 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-17 22:24:39,857 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-20 01:44:03,926 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-20 01:44:05,592 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-20 01:44:06,430 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-20 01:44:06,431 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-20 01:44:06,431 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server 192.168.1.56/192.168.1.56:55282 is not running yet
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:98)
	at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)

2015-04-20 01:44:10,443 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-20 01:44:10,584 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-20 01:44:10,593 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-20 01:44:10,601 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-20 01:44:10,611 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-20 01:44:10,622 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-20 01:44:10,623 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-20 01:45:35,019 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-20 01:45:35,022 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-20 01:45:35,023 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-20 01:45:35,023 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-20 01:45:37,369 INFO  io.prediction.tools.console.App$ [main] - Aborted.
2015-04-20 01:45:41,896 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-20 01:45:41,898 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-20 01:45:41,898 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-20 01:45:41,899 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-20 01:45:43,735 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-20 01:45:49,759 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-20 01:45:56,243 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-20 01:46:01,473 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-20 01:46:01,756 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-20 01:46:01,860 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-20 01:46:33,030 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-20 01:46:33,083 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-20 01:46:33,102 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-20 01:46:33,115 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-20 01:46:33,125 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-20 01:46:33,136 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-20 01:46:33,137 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-20 02:00:19,046 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-20 02:00:19,097 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-20 02:00:19,114 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-20 02:00:19,121 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-20 02:00:19,126 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-20 02:00:19,134 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-20 02:00:19,135 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-20 02:01:53,889 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-20 02:01:55,672 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-20 02:02:08,254 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-20 02:02:08,255 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-20 02:43:04,293 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-20 02:43:06,376 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-20 02:43:10,491 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-20 02:43:10,492 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-20 06:45:43,606 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-20 23:58:42,439 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-20 23:58:42,441 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-20 23:58:42,442 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-20 23:58:42,443 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 00:15:25,140 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 00:15:26,667 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:15:35,273 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-21 00:15:35,274 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-21 00:15:36,546 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 00:15:36,663 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 00:15:36,673 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 00:15:36,681 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 00:15:36,688 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 00:15:36,697 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 00:15:36,701 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-21 00:15:50,523 ERROR io.prediction.tools.console.App$ [main] - App TextaPP1 does not exist. Aborting.
2015-04-21 00:15:58,989 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-21 00:15:58,991 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-21 00:15:58,992 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-21 00:15:58,992 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 00:16:01,352 INFO  io.prediction.tools.console.App$ [main] - Aborted.
2015-04-21 00:16:05,417 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-21 00:16:05,419 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-21 00:16:05,419 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-21 00:16:05,420 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 00:16:06,945 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:16:23,231 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-21 00:16:28,630 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-21 00:16:33,875 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-21 00:16:39,263 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-21 00:16:39,367 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 00:16:45,460 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 00:16:45,531 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 00:16:45,540 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 00:16:45,548 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 00:16:45,554 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 00:16:45,561 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 00:16:45,561 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-21 00:17:52,086 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:17:52,121 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 00:17:52,122 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 00:17:52,124 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 00:17:52,124 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 00:18:12,381 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/TextManipulationEngine/src/main/scala/TextManipulationEngine/CountVectorizer.scala:37: value foreach is not a member of java.util.Iterator[opennlp.tools.util.StringList][0m
2015-04-21 00:18:12,382 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m    for (x <- model.iterator)[0m
2015-04-21 00:18:12,382 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m                    ^[0m
2015-04-21 00:18:12,926 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/TextManipulationEngine/src/main/scala/TextManipulationEngine/Model.scala:13: `abstract' modifier can be used only for classes; it should be omitted for abstract members[0m
2015-04-21 00:18:12,928 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m  abstract def predict(doc: String): PredictedResult[0m
2015-04-21 00:18:12,928 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m               ^[0m
2015-04-21 00:18:13,174 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mtwo errors found[0m
2015-04-21 00:18:13,199 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(compile:[31mcompile[0m) Compilation failed[0m
2015-04-21 00:18:13,203 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 10 s, completed Apr 21, 2015 12:18:13 AM[0m
2015-04-21 00:18:13,374 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-04-21 00:23:42,994 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 00:23:43,054 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 00:23:43,066 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 00:23:43,072 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 00:23:43,081 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 00:23:43,090 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 00:23:43,091 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-21 00:23:57,150 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:23:57,203 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 00:23:57,204 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 00:23:57,205 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 00:23:57,205 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 00:24:15,243 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 00:24:15,244 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 00:24:15,253 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:24:15,253 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:24:15,261 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 00:24:17,012 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:24:17,144 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:24:17,214 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:24:17,236 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 00:24:17,365 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 00:24:21,358 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:24:23,586 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:24:23,732 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 00:24:25,800 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:24:27,505 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 00:24:27,661 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 00:24:27,677 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 00:24:27,678 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 00:24:27,680 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 00:24:27,688 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 00:24:27,688 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 00:24:31,034 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 00:24:31,414 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@calvisitor-10-105-186-107.calvisitor.1918.berkeley.edu:60131]
2015-04-21 00:24:33,205 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 00:24:33,206 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@2921199d
2015-04-21 00:24:33,207 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@59fc6d05
2015-04-21 00:24:33,207 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@23ad71bf)
2015-04-21 00:24:33,208 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 00:24:39,594 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 00:24:39,595 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 00:26:08,381 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:26:08,611 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 00:26:08,613 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 00:26:08,615 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 00:26:08,627 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 00:26:42,541 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 00:26:42,542 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 00:26:42,548 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:26:42,548 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:26:42,555 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 00:26:44,185 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:26:44,297 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:26:44,384 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:26:44,396 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 00:26:44,424 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 00:26:48,404 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:26:50,100 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:26:50,224 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 00:26:52,270 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:26:53,283 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 00:26:53,391 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 00:26:53,405 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 00:26:53,405 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 00:26:53,406 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 00:26:53,412 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 00:26:53,412 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 00:26:55,164 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-21 00:26:55,343 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@calvisitor-10-105-186-107.calvisitor.1918.berkeley.edu:60199]
2015-04-21 00:26:56,296 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 00:26:56,297 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 00:26:56,297 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 00:26:56,298 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 00:26:56,298 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 00:27:02,651 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 00:27:02,652 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 00:27:24,105 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 00:27:24,106 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 00:27:24,107 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUza32AT9IE4ZnWr8eIL
2015-04-21 00:27:24,122 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 00:27:24,289 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 00:27:24,322 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 00:27:31,586 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUza32AT9IE4ZnWr8eIL --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUza32AT9IE4ZnWr8eIL --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 00:27:35,509 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-2] - Non-empty parameters supplied to TextManipulationEngine.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 00:27:35,516 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-2] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 00:27:35,750 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-3] - Failed to invert: [B@2d5e0a53
com.twitter.bijection.InversionFailure: Failed to invert: [B@2d5e0a53
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:43)
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:42)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
	at scala.util.Failure.recoverWith(Try.scala:172)
	at com.twitter.bijection.Inversion$.attempt(Inversion.scala:30)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:55)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:364)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:287)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:250)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
Serialization trace:
TextManipulationEngine$CountVectorizer$$universe (TextManipulationEngine.CountVectorizer)
dataModel (TextManipulationEngine.SupervisedModel)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:43)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:21)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.SerDeState.readClassAndObject(SerDeState.java:61)
	at com.twitter.chill.KryoPool.fromBytes(KryoPool.java:94)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.bijection.Inversion$$anonfun$attempt$1.apply(Inversion.scala:30)
	at scala.util.Try$.apply(Try.scala:161)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
	at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
	at java.lang.reflect.Field.set(Field.java:764)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
	... 31 more
2015-04-21 00:31:04,944 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:31:04,991 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 00:31:04,991 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 00:31:04,992 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 00:31:04,993 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 00:31:21,235 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 00:31:21,235 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 00:31:21,244 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:31:21,244 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:31:21,256 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 00:31:23,029 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:31:23,168 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:31:23,254 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:31:23,266 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 00:31:23,301 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 00:31:26,527 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:31:28,244 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:31:28,379 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 00:31:30,287 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:31:31,204 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 00:31:31,290 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 00:31:31,302 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 00:31:31,303 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 00:31:31,304 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 00:31:31,310 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 00:31:31,310 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 00:31:33,037 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-21 00:31:33,280 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@calvisitor-10-105-186-107.calvisitor.1918.berkeley.edu:60331]
2015-04-21 00:31:34,693 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 00:31:34,694 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 00:31:34,695 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 00:31:34,695 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 00:31:34,696 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 00:31:46,102 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 00:31:46,103 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 00:33:21,598 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:33:21,704 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 00:33:21,704 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 00:33:21,707 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 00:33:21,709 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 00:33:38,065 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 00:33:38,066 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 00:33:38,073 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:33:38,073 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:33:38,080 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 00:33:39,725 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:33:39,837 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:33:39,938 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:33:39,949 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 00:33:39,971 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 00:33:43,721 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:33:45,439 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:33:45,557 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 00:33:47,602 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:33:48,637 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 00:33:48,745 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 00:33:48,759 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 00:33:48,759 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 00:33:48,761 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 00:33:48,766 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 00:33:48,767 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 00:33:50,565 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 00:33:50,795 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@calvisitor-10-105-186-107.calvisitor.1918.berkeley.edu:60397]
2015-04-21 00:33:51,964 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 00:33:51,964 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 00:33:51,965 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 00:33:51,966 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 00:33:51,966 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 00:33:58,379 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 00:33:58,380 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 00:34:19,633 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 00:34:19,633 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 00:34:19,634 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUza5baa9IE4ZnWr8eIN
2015-04-21 00:34:19,648 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 00:34:19,798 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 00:34:19,810 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 00:34:29,005 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUza5baa9IE4ZnWr8eIN --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUza5baa9IE4ZnWr8eIN --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 00:34:32,815 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to TextManipulationEngine.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 00:34:32,830 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 00:34:33,075 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-4] - Failed to invert: [B@1c31f8e1
com.twitter.bijection.InversionFailure: Failed to invert: [B@1c31f8e1
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:43)
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:42)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
	at scala.util.Failure.recoverWith(Try.scala:172)
	at com.twitter.bijection.Inversion$.attempt(Inversion.scala:30)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:55)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:364)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:287)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:250)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
Serialization trace:
TextManipulationEngine$CountVectorizer$$universe (TextManipulationEngine.CountVectorizer)
dataModel (TextManipulationEngine.SupervisedModel)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:43)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:21)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.SerDeState.readClassAndObject(SerDeState.java:61)
	at com.twitter.chill.KryoPool.fromBytes(KryoPool.java:94)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.bijection.Inversion$$anonfun$attempt$1.apply(Inversion.scala:30)
	at scala.util.Try$.apply(Try.scala:161)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
	at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
	at java.lang.reflect.Field.set(Field.java:764)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
	... 31 more
2015-04-21 00:35:55,743 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:35:55,792 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 00:35:55,793 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 00:35:55,794 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 00:35:55,794 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 00:36:12,930 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 00:36:12,931 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 00:36:12,937 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:36:12,937 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:36:12,944 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 00:36:14,697 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:36:14,797 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 00:36:14,890 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 00:36:14,905 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 00:36:14,928 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 00:36:18,147 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 00:36:19,841 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:36:19,953 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 00:36:21,780 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 00:36:22,652 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 00:36:22,737 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 00:36:22,749 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 00:36:22,750 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 00:36:22,751 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 00:36:22,756 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 00:36:22,757 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 00:36:24,454 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-21 00:36:24,630 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@calvisitor-10-105-186-107.calvisitor.1918.berkeley.edu:60501]
2015-04-21 00:36:25,612 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 00:36:25,613 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 00:36:25,613 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 00:36:25,614 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 00:36:25,615 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 00:36:32,039 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 00:36:32,040 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 00:38:10,099 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 00:38:10,100 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 00:38:10,100 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUza6BAy9IE4ZnWr8eIO
2015-04-21 00:38:10,113 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 00:38:10,235 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 00:38:10,247 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 00:38:17,744 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUza6BAy9IE4ZnWr8eIO --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUza6BAy9IE4ZnWr8eIO --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 00:38:21,723 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-2] - Non-empty parameters supplied to TextManipulationEngine.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 00:38:21,729 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-2] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 00:38:21,976 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-3] - Failed to invert: [B@6413f9ee
com.twitter.bijection.InversionFailure: Failed to invert: [B@6413f9ee
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:43)
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:42)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
	at scala.util.Failure.recoverWith(Try.scala:172)
	at com.twitter.bijection.Inversion$.attempt(Inversion.scala:30)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:55)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:364)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:287)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:250)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
Serialization trace:
TextManipulationEngine$CountVectorizer$$universe (TextManipulationEngine.CountVectorizer)
dataModel (TextManipulationEngine.SupervisedModel)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:43)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:21)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.SerDeState.readClassAndObject(SerDeState.java:61)
	at com.twitter.chill.KryoPool.fromBytes(KryoPool.java:94)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.bijection.Inversion$$anonfun$attempt$1.apply(Inversion.scala:30)
	at scala.util.Try$.apply(Try.scala:161)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
	at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
	at java.lang.reflect.Field.set(Field.java:764)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
	... 31 more
2015-04-21 01:14:24,165 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-21 01:39:35,693 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 01:39:37,598 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:39:45,071 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:39:45,172 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 01:39:45,173 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 01:39:45,174 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 01:39:45,176 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 01:39:46,265 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:7070
2015-04-21 01:39:46,266 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Bound received. EventServer is ready.
2015-04-21 01:40:02,063 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 01:40:02,064 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 01:40:02,072 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:40:02,072 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:40:02,080 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 01:40:03,735 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:40:03,849 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:40:03,935 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:40:03,948 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 01:40:04,092 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 01:40:07,564 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:40:09,251 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:40:09,347 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 01:40:11,117 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:40:11,920 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 01:40:12,000 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 01:40:12,013 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 01:40:12,013 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 01:40:12,015 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 01:40:12,028 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 01:40:12,029 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 01:40:13,735 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-21 01:40:13,909 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:60977]
2015-04-21 01:40:14,879 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 01:40:14,880 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 01:40:14,881 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 01:40:14,882 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 01:40:14,882 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 01:40:20,382 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-21 01:40:20,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x776015fc, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:149)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:73)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:88)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:181)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:222)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:280)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:24)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:43)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:15)
	at io.prediction.controller.PDataSource.readTrainingBase(DataSource.scala:41)
	at io.prediction.controller.Engine$.train(Engine.scala:518)
	at io.prediction.controller.Engine.train(Engine.scala:147)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:61)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:258)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-21 01:40:20,387 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:149)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:73)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:88)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:181)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:222)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:280)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:24)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:43)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:15)
	at io.prediction.controller.PDataSource.readTrainingBase(DataSource.scala:41)
	at io.prediction.controller.Engine$.train(Engine.scala:518)
	at io.prediction.controller.Engine.train(Engine.scala:147)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:61)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:258)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-21 01:40:21,589 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-21 01:40:21,590 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-21 01:40:21,591 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-21 01:40:21,591 ERROR io.prediction.controller.Engine$ [main] - Error occured reading from data source. (Reason: Data source HBASE was not properly initialized.) Please see the log for debugging details.
io.prediction.data.storage.StorageClientException: Data source HBASE was not properly initialized.
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:182)
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:182)
	at scala.Option.getOrElse(Option.scala:120)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:181)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:222)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:280)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:24)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:43)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:15)
	at io.prediction.controller.PDataSource.readTrainingBase(DataSource.scala:41)
	at io.prediction.controller.Engine$.train(Engine.scala:518)
	at io.prediction.controller.Engine.train(Engine.scala:147)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:61)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:258)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.launch(SparkSubmit.scala:358)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:75)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-21 01:45:39,111 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:45:39,158 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 01:45:39,158 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 01:45:39,159 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 01:45:39,159 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 01:45:45,755 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 01:45:45,756 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 01:45:45,763 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:45:45,763 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:45:45,772 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 01:45:47,402 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:45:47,492 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:45:47,572 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:45:47,584 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 01:45:47,620 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 01:45:51,236 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:45:52,896 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:45:53,009 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 01:45:54,731 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:45:55,564 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 01:45:55,641 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 01:45:55,652 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 01:45:55,652 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 01:45:55,653 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 01:45:55,658 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 01:45:55,658 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 01:45:57,299 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 01:45:57,483 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:61459]
2015-04-21 01:45:58,508 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 01:45:58,508 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 01:45:58,509 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 01:45:58,510 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 01:45:58,510 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 01:46:04,920 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 01:46:04,921 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 01:48:16,201 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:48:16,441 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 01:48:16,442 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 01:48:16,445 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 01:48:16,445 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 01:48:34,122 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 01:48:34,122 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 01:48:34,132 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:48:34,133 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:48:34,148 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 01:48:35,786 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:48:35,890 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:48:35,980 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:48:35,993 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 01:48:36,022 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 01:48:40,747 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:48:42,387 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:48:42,504 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 01:48:44,264 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:48:45,094 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 01:48:45,177 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 01:48:45,187 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 01:48:45,188 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 01:48:45,189 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 01:48:45,193 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 01:48:45,194 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 01:48:46,822 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 01:48:47,012 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:61524]
2015-04-21 01:48:47,990 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 01:48:47,990 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 01:48:47,991 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 01:48:47,991 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 01:48:47,992 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 01:48:49,162 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 01:48:49,164 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 01:48:54,375 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 01:49:39,342 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.util.HashMap.newNode(HashMap.java:1734)
	at java.util.HashMap.putVal(HashMap.java:630)
	at java.util.HashMap.put(HashMap.java:611)
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:133)
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:166)
	at TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$hashData(CountVectorizer.scala:35)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-21 01:49:39,350 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.util.HashMap.newNode(HashMap.java:1734)
	at java.util.HashMap.putVal(HashMap.java:630)
	at java.util.HashMap.put(HashMap.java:611)
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:133)
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:166)
	at TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$hashData(CountVectorizer.scala:35)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-21 01:49:39,355 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.util.HashMap.newNode(HashMap.java:1734)
	at java.util.HashMap.putVal(HashMap.java:630)
	at java.util.HashMap.put(HashMap.java:611)
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:133)
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:166)
	at TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$hashData(CountVectorizer.scala:35)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)

2015-04-21 01:49:39,357 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Task 0 in stage 0.0 failed 1 times; aborting job
2015-04-21 01:50:38,550 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:50:41,620 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:50:41,826 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 01:50:44,462 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:50:45,807 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 01:50:45,948 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 01:50:45,966 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 01:50:45,967 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 01:50:45,969 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 01:50:45,978 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 01:50:45,980 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 01:50:48,664 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 01:50:48,995 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:61588]
2015-04-21 01:50:50,993 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 01:50:50,996 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@2921199d
2015-04-21 01:50:50,997 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@59fc6d05
2015-04-21 01:50:50,998 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@23ad71bf)
2015-04-21 01:50:51,000 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 01:51:07,854 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 01:51:07,855 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 01:51:08,019 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 01:52:09,754 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:160)
	at TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$hashData(CountVectorizer.scala:35)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-21 01:52:09,773 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:160)
	at TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$hashData(CountVectorizer.scala:35)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-21 01:52:09,776 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.OutOfMemoryError: GC overhead limit exceeded
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:160)
	at TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$hashData(CountVectorizer.scala:35)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at TextManipulationEngine.CountVectorizer$$anonfun$1.apply(CountVectorizer.scala:48)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)

2015-04-21 01:52:09,779 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Task 0 in stage 0.0 failed 1 times; aborting job
2015-04-21 01:56:00,364 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:56:00,417 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 01:56:00,417 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 01:56:00,418 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 01:56:00,419 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 01:56:14,557 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 01:56:14,558 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 01:56:14,566 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:56:14,566 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:56:14,574 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 01:56:16,573 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:56:16,688 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 01:56:16,773 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 01:56:16,792 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 01:56:16,833 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 01:56:20,039 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 01:56:21,689 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:56:21,819 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 01:56:23,800 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 01:56:24,789 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 01:56:24,901 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 01:56:24,915 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 01:56:24,916 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 01:56:24,918 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 01:56:24,924 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 01:56:24,924 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 01:56:26,681 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 01:56:26,910 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:61722]
2015-04-21 01:56:28,363 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 01:56:28,364 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@43f03c23
2015-04-21 01:56:28,365 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@3d40a3b4
2015-04-21 01:56:28,365 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@78307a56)
2015-04-21 01:56:28,365 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 01:56:29,611 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 01:56:29,612 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 01:56:29,733 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 01:57:04,269 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 01:57:04,270 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 01:57:04,271 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUzbMVZylg-pgU3hEQGe
2015-04-21 01:57:04,283 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 01:57:04,438 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 01:57:04,458 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 01:57:12,312 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUzbMVZylg-pgU3hEQGe --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUzbMVZylg-pgU3hEQGe --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 01:57:15,948 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-2] - Non-empty parameters supplied to TextManipulationEngine.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 01:57:15,963 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-2] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 01:57:16,194 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-3] - Failed to invert: [B@1f52cf03
com.twitter.bijection.InversionFailure: Failed to invert: [B@1f52cf03
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:43)
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:42)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
	at scala.util.Failure.recoverWith(Try.scala:172)
	at com.twitter.bijection.Inversion$.attempt(Inversion.scala:30)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:55)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:364)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:287)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:250)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
Serialization trace:
TextManipulationEngine$CountVectorizer$$universe (TextManipulationEngine.CountVectorizer)
dataModel (TextManipulationEngine.SupervisedModel)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:43)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:21)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.SerDeState.readClassAndObject(SerDeState.java:61)
	at com.twitter.chill.KryoPool.fromBytes(KryoPool.java:94)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.bijection.Inversion$$anonfun$attempt$1.apply(Inversion.scala:30)
	at scala.util.Try$.apply(Try.scala:161)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
	at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
	at java.lang.reflect.Field.set(Field.java:764)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
	... 31 more
2015-04-21 02:11:17,253 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 02:11:18,546 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:11:26,163 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-21 02:11:26,164 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-21 02:11:34,287 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 02:11:34,334 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 02:11:34,335 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 02:11:34,337 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 02:11:34,337 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 02:11:50,039 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 02:11:50,039 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 02:11:50,045 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 02:11:50,046 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 02:11:50,052 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 02:11:51,686 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:11:51,792 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 02:11:51,870 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 02:11:51,898 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 02:11:51,957 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 02:11:56,149 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 02:11:57,794 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:11:57,924 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 02:11:59,696 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:12:00,575 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 02:12:00,645 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 02:12:00,660 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 02:12:00,660 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 02:12:00,661 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 02:12:00,666 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 02:12:00,667 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 02:12:02,413 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 02:12:02,598 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:62045]
2015-04-21 02:12:03,580 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 02:12:03,580 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@2921199d
2015-04-21 02:12:03,581 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@59fc6d05
2015-04-21 02:12:03,581 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@23ad71bf)
2015-04-21 02:12:03,582 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 02:12:09,947 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 02:12:09,948 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 02:12:10,089 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 02:12:45,664 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 02:12:45,665 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 02:12:45,666 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUzbP53D2BYFOcR65-LN
2015-04-21 02:12:45,683 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 02:12:45,802 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 02:12:45,821 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 02:12:54,357 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUzbP53D2BYFOcR65-LN --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUzbP53D2BYFOcR65-LN --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 02:12:58,156 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to TextManipulationEngine.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 02:12:58,162 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 02:12:58,444 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-4] - Failed to invert: [B@7134b8f4
com.twitter.bijection.InversionFailure: Failed to invert: [B@7134b8f4
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:43)
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:42)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
	at scala.util.Failure.recoverWith(Try.scala:172)
	at com.twitter.bijection.Inversion$.attempt(Inversion.scala:30)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:55)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:364)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:287)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:250)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.universe to scala.collection.mutable.HashSet
Serialization trace:
universe (TextManipulationEngine.CountVectorizer)
dataModel (TextManipulationEngine.SupervisedModel)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:43)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:21)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.SerDeState.readClassAndObject(SerDeState.java:61)
	at com.twitter.chill.KryoPool.fromBytes(KryoPool.java:94)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.bijection.Inversion$$anonfun$attempt$1.apply(Inversion.scala:30)
	at scala.util.Try$.apply(Try.scala:161)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.universe to scala.collection.mutable.HashSet
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
	at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
	at java.lang.reflect.Field.set(Field.java:764)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
	... 31 more
2015-04-21 02:15:42,870 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 02:15:42,921 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 02:15:42,921 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 02:15:42,922 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 02:15:42,923 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 02:15:55,643 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 02:15:55,643 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 02:15:55,652 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 02:15:55,653 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 02:15:55,662 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 02:15:57,205 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:15:57,305 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 02:15:57,376 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 02:15:57,390 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 02:15:57,412 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 02:16:00,750 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 02:16:02,487 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:16:02,591 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 02:16:04,393 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:16:05,229 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 02:16:05,301 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 02:16:05,311 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 02:16:05,311 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 02:16:05,312 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 02:16:05,317 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 02:16:05,318 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 02:16:06,931 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 02:16:07,109 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:62152]
2015-04-21 02:16:08,089 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 02:16:08,090 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@23ad71bf
2015-04-21 02:16:08,090 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@b791a81
2015-04-21 02:16:08,091 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@71e7adbb)
2015-04-21 02:16:08,091 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 02:16:24,564 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 02:16:24,565 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 02:16:24,701 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 02:18:18,141 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 02:18:18,143 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 02:18:18,149 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUzbQ1lH2BYFOcR65-LO
2015-04-21 02:18:18,283 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 02:18:18,966 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 02:18:19,050 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 02:18:38,947 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUzbQ1lH2BYFOcR65-LO --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUzbQ1lH2BYFOcR65-LO --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 02:18:42,766 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to TextManipulationEngine.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 02:18:42,774 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 02:18:42,990 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-4] - Failed to invert: [B@1003d4b8
com.twitter.bijection.InversionFailure: Failed to invert: [B@1003d4b8
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:43)
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:42)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
	at scala.util.Failure.recoverWith(Try.scala:172)
	at com.twitter.bijection.Inversion$.attempt(Inversion.scala:30)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:55)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:364)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:287)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:250)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
Serialization trace:
TextManipulationEngine$CountVectorizer$$universe (TextManipulationEngine.CountVectorizer)
dataModel (TextManipulationEngine.SupervisedModel)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:43)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:21)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.SerDeState.readClassAndObject(SerDeState.java:61)
	at com.twitter.chill.KryoPool.fromBytes(KryoPool.java:94)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.bijection.Inversion$$anonfun$attempt$1.apply(Inversion.scala:30)
	at scala.util.Try$.apply(Try.scala:161)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.CountVectorizer.TextManipulationEngine$CountVectorizer$$universe to scala.collection.mutable.HashSet
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
	at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
	at java.lang.reflect.Field.set(Field.java:764)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
	... 31 more
2015-04-21 02:26:50,892 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 02:26:50,943 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 02:26:50,943 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 02:26:50,945 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 02:26:50,945 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 02:27:05,616 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 02:27:05,617 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 02:27:05,623 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 02:27:05,623 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 02:27:05,629 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 02:27:07,218 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:27:07,317 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 02:27:07,387 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 02:27:07,402 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 02:27:07,425 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 02:27:12,697 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 02:27:14,344 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:27:14,459 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 02:27:16,201 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 02:27:17,005 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 02:27:17,099 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 02:27:17,113 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 02:27:17,114 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 02:27:17,115 INFO  io.prediction.controller.Engine [main] - Preparator params: (,Empty)
2015-04-21 02:27:17,121 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 02:27:17,122 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 02:27:18,747 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 02:27:18,908 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:62295]
2015-04-21 02:27:19,844 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 02:27:19,845 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@2921199d
2015-04-21 02:27:19,845 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@59fc6d05
2015-04-21 02:27:19,846 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@23ad71bf)
2015-04-21 02:27:19,846 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 02:27:26,165 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 02:27:26,166 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 02:27:31,384 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 02:28:05,494 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 02:28:05,495 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 02:28:05,495 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUzbTZmh2BYFOcR65-LP
2015-04-21 02:28:05,510 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 02:28:05,624 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 02:28:05,636 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 02:28:14,217 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUzbTZmh2BYFOcR65-LP --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUzbTZmh2BYFOcR65-LP --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 02:28:17,895 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to TextManipulationEngine.Preparator, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 02:28:17,902 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 02:28:18,116 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-3] - Failed to invert: [B@1aa38564
com.twitter.bijection.InversionFailure: Failed to invert: [B@1aa38564
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:43)
	at com.twitter.bijection.InversionFailure$$anonfun$partialFailure$1.applyOrElse(InversionFailure.scala:42)
	at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
	at scala.util.Failure.recoverWith(Try.scala:172)
	at com.twitter.bijection.Inversion$.attempt(Inversion.scala:30)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance.invert(KryoInjection.scala:55)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:364)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:287)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:250)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.Universe.universe to scala.collection.mutable.HashSet
Serialization trace:
universe (TextManipulationEngine.Universe)
TextManipulationEngine$CountVectorizer$$universe (TextManipulationEngine.CountVectorizer)
dataModel (TextManipulationEngine.SupervisedModel)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:626)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:648)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:605)
	at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:221)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:43)
	at com.twitter.chill.TraversableSerializer.read(Traversable.scala:21)
	at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:729)
	at com.twitter.chill.SerDeState.readClassAndObject(SerDeState.java:61)
	at com.twitter.chill.KryoPool.fromBytes(KryoPool.java:94)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.chill.KryoInjectionInstance$$anonfun$invert$2.apply(KryoInjection.scala:65)
	at com.twitter.bijection.Inversion$$anonfun$attempt$1.apply(Inversion.scala:30)
	at scala.util.Try$.apply(Try.scala:161)
	... 17 more
Caused by: java.lang.IllegalArgumentException: Can not set final scala.collection.mutable.LinkedHashSet field TextManipulationEngine.Universe.universe to scala.collection.mutable.HashSet
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
	at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
	at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.set(UnsafeQualifiedObjectFieldAccessorImpl.java:83)
	at java.lang.reflect.Field.set(Field.java:764)
	at com.esotericsoftware.kryo.serializers.FieldSerializer$ObjectField.read(FieldSerializer.java:619)
	... 34 more
2015-04-21 10:51:04,981 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-21 17:47:41,108 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 17:47:42,887 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 17:47:43,611 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-21 17:47:43,612 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-21 17:47:43,613 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server 192.168.1.56/192.168.1.56:63191 is not running yet
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:98)
	at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)

2015-04-21 17:48:05,182 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 17:48:05,299 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 17:48:05,317 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 17:48:05,332 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 17:48:05,362 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 17:48:05,386 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 17:48:05,388 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-21 17:48:17,388 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-21 17:48:17,390 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-21 17:48:17,390 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-21 17:48:17,391 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 17:48:20,191 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 17:48:26,288 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-21 17:48:37,022 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-21 17:48:47,336 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-21 17:48:47,621 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-21 17:48:47,724 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 17:50:50,224 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 17:50:51,476 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 17:50:52,226 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-21 17:50:52,227 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-21 17:50:52,227 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server 192.168.1.56/192.168.1.56:63299 is not running yet
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:98)
	at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)

2015-04-21 17:53:46,923 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 17:53:47,056 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 17:53:47,070 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 17:53:47,083 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 17:53:47,100 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 17:53:47,127 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 17:53:47,129 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-21 17:55:40,334 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 17:55:41,719 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 17:55:46,807 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 17:55:46,908 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 17:55:46,924 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 17:55:46,986 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 17:55:47,020 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 17:55:47,089 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 17:55:47,090 INFO  io.prediction.tools.console.App$ [main] - Finished listing 5 app(s).
2015-04-21 17:55:54,562 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:7070
2015-04-21 17:55:54,563 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Bound received. EventServer is ready.
2015-04-21 18:01:56,100 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:01:56,149 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 18:01:56,149 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 18:01:56,150 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 18:01:56,151 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 18:02:12,178 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 18:02:12,179 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 18:02:12,185 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:02:12,185 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:02:12,191 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 18:02:13,842 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:02:13,954 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:02:14,045 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:02:14,069 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 18:02:14,165 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 18:02:18,632 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:02:20,323 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:02:20,450 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 18:02:22,458 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:02:23,453 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 18:02:23,561 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:02:23,576 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 18:02:23,576 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 18:02:23,577 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:02:23,579 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-21 18:02:23,585 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 18:02:23,586 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 18:02:25,342 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 18:02:25,590 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:63478]
2015-04-21 18:02:27,209 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 18:02:27,210 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@47b269c4
2015-04-21 18:02:27,211 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7c40ffef
2015-04-21 18:02:27,211 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@1e3df614)
2015-04-21 18:02:27,212 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 18:02:38,615 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 18:02:43,820 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 18:03:36,257 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 0.0 (TID 0)
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:166)
	at TextManipulationEngine.DataModel.TextManipulationEngine$DataModel$$hashDoc(DataModel.scala:36)
	at TextManipulationEngine.DataModel$$anonfun$1.apply(DataModel.scala:58)
	at TextManipulationEngine.DataModel$$anonfun$1.apply(DataModel.scala:58)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-21 18:03:36,321 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Lost task 0.0 in stage 0.0 (TID 0, localhost): java.lang.OutOfMemoryError: GC overhead limit exceeded
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:166)
	at TextManipulationEngine.DataModel.TextManipulationEngine$DataModel$$hashDoc(DataModel.scala:36)
	at TextManipulationEngine.DataModel$$anonfun$1.apply(DataModel.scala:58)
	at TextManipulationEngine.DataModel$$anonfun$1.apply(DataModel.scala:58)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)

2015-04-21 18:03:36,328 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Task 0 in stage 0.0 failed 1 times; aborting job
2015-04-21 18:03:36,453 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at opennlp.tools.ngram.NGramModel.add(NGramModel.java:166)
	at TextManipulationEngine.DataModel.TextManipulationEngine$DataModel$$hashDoc(DataModel.scala:36)
	at TextManipulationEngine.DataModel$$anonfun$1.apply(DataModel.scala:58)
	at TextManipulationEngine.DataModel$$anonfun$1.apply(DataModel.scala:58)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$class.foreach(Iterator.scala:727)
	at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
	at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
	at scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
	at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
	at scala.collection.AbstractIterator.to(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
	at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
	at scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
	at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.rdd.RDD$$anonfun$org$apache$spark$rdd$RDD$$collectPartition$1$1.apply(RDD.scala:808)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.SparkContext$$anonfun$runJob$4.apply(SparkContext.scala:1353)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-21 18:16:56,532 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:16:56,578 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 18:16:56,578 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 18:16:56,580 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 18:16:56,580 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 18:17:08,659 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 18:17:08,659 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 18:17:08,666 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:17:08,667 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:17:08,674 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 18:17:10,266 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:17:10,366 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:17:10,444 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:17:10,456 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 18:17:10,480 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 18:17:17,983 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:17:19,649 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:17:19,768 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 18:17:21,553 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:17:22,371 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 18:17:22,453 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:17:22,463 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(5))
2015-04-21 18:17:22,464 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 18:17:22,465 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:17:22,467 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-21 18:17:22,472 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 18:17:22,474 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 18:17:24,126 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-21 18:17:24,316 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:63712]
2015-04-21 18:17:25,346 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 18:17:25,346 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@59fc6d05
2015-04-21 18:17:25,347 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@23ad71bf
2015-04-21 18:17:25,348 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@b791a81)
2015-04-21 18:17:25,348 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 18:17:36,791 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 18:17:36,937 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 18:17:48,957 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 18:17:58,182 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 18:17:58,182 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 18:17:58,183 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUzes27KZeO1jiHMEW-_
2015-04-21 18:17:58,198 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 18:17:58,350 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 18:17:58,371 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 18:18:09,360 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUzes27KZeO1jiHMEW-_ --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUzes27KZeO1jiHMEW-_ --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 18:18:13,148 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 18:18:13,563 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-04-21 18:18:13,746 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:63754]
2015-04-21 18:18:15,069 WARN  org.apache.hadoop.util.NativeCodeLoader [pio-server-akka.actor.default-dispatcher-3] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:18:15,984 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Using persisted model
2015-04-21 18:18:15,985 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Loaded model TextManipulationEngine.SupervisedModel for algorithm TextManipulationEngine.SupervisedAlgorithm
2015-04-21 18:18:15,998 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-4] - Undeploying any existing engine instance at http://localhost:8000
2015-04-21 18:18:16,032 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-4] - Nothing at http://localhost:8000
2015-04-21 18:18:16,799 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-5] - Bound to localhost/127.0.0.1:8000
2015-04-21 18:18:16,800 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-7] - Bind successful. Ready to serve.
2015-04-21 18:33:07,934 WARN  spray.can.server.HttpServerConnection [pio-server-akka.actor.default-dispatcher-17] - Illegal request, responding with status '413 Request Entity Too Large': Request Content-Length 14218200 exceeds the configured limit of 8388608
2015-04-21 18:47:25,593 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 18:47:26,841 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:47:29,301 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-21 18:47:29,303 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-21 18:48:21,361 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:48:22,340 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_6 doesn't exist yet. Creating now...
2015-04-21 18:48:22,667 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 6.
2015-04-21 18:48:22,690 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-04-21 18:48:22,690 INFO  io.prediction.tools.console.App$ [main] -       Name: TextApp
2015-04-21 18:48:22,690 INFO  io.prediction.tools.console.App$ [main] -         ID: 6
2015-04-21 18:48:22,691 INFO  io.prediction.tools.console.App$ [main] - Access Key: 4MM9gXNr3LkMCSCfCoZcVzaWPJi1Gbpn2Hm1PiIvsSRVONiaSqhSRemUSnkaUZng
2015-04-21 18:50:38,465 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:50:38,512 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 18:50:38,512 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 18:50:38,513 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 18:50:38,513 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 18:50:53,841 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 18:50:53,842 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 18:50:53,852 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:50:53,852 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:50:53,863 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 18:50:55,695 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:50:55,781 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:50:55,871 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:50:55,888 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 18:50:55,926 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 18:50:59,787 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:51:01,451 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:51:01,565 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 18:51:03,364 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:51:04,218 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 18:51:04,301 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:51:04,312 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(6))
2015-04-21 18:51:04,312 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 18:51:04,313 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:51:04,315 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-21 18:51:04,320 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 18:51:04,321 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 18:51:06,031 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 18:51:06,220 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:63948]
2015-04-21 18:51:07,219 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 18:51:07,220 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@47b269c4
2015-04-21 18:51:07,220 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7c40ffef
2015-04-21 18:51:07,221 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@1e3df614)
2015-04-21 18:51:07,221 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 18:51:13,507 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 18:51:18,736 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 18:51:19,427 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 18:53:20,413 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:53:20,656 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 18:53:20,660 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 18:53:20,663 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 18:53:20,668 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 18:54:00,559 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 18:54:00,559 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 18:54:00,565 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:54:00,565 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:54:00,572 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 18:54:02,334 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:54:02,430 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:54:02,500 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:54:02,514 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 18:54:02,538 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 18:55:12,880 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:55:12,950 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 18:55:12,954 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 18:55:12,956 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 18:55:12,959 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 18:55:25,790 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 18:55:25,791 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 18:55:25,798 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:55:25,798 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:55:25,805 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 18:55:27,466 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:55:27,573 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 18:55:27,651 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 18:55:27,664 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 18:55:27,690 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 18:55:37,015 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 18:55:38,670 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:55:38,787 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 18:55:40,587 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 18:55:41,407 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 18:55:41,479 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:55:41,492 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(6))
2015-04-21 18:55:41,492 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 18:55:41,493 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 18:55:41,495 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-21 18:55:41,499 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 18:55:41,501 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 18:55:43,145 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-21 18:55:43,316 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:64040]
2015-04-21 18:55:44,358 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 18:55:44,359 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@b791a81
2015-04-21 18:55:44,359 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@71e7adbb
2015-04-21 18:55:44,359 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@286855ea)
2015-04-21 18:55:44,360 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 18:55:50,666 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 18:55:50,809 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 18:55:51,508 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 19:04:02,809 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 19:04:02,935 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 19:04:02,965 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 19:04:03,013 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 19:04:03,043 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 19:04:03,059 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    6 | 4MM9gXNr3LkMCSCfCoZcVzaWPJi1Gbpn2Hm1PiIvsSRVONiaSqhSRemUSnkaUZng | (all)
2015-04-21 19:04:03,070 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 19:04:03,086 INFO  io.prediction.tools.console.App$ [main] - Finished listing 6 app(s).
2015-04-21 19:04:13,968 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 19:04:14,014 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 19:04:14,017 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 19:04:14,018 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 19:04:14,019 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 19:04:25,753 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 19:04:25,754 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 19:04:25,762 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 19:04:25,763 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 19:04:25,771 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 19:04:28,228 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 19:04:28,400 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 19:04:28,549 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 19:04:28,605 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 19:04:28,654 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 19:04:35,965 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 19:04:38,777 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 19:04:38,953 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 19:04:41,667 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 19:04:42,975 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 19:04:43,100 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 19:04:43,118 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(6))
2015-04-21 19:04:43,118 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 19:04:43,119 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 19:04:43,122 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-21 19:04:43,129 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 19:04:43,132 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 19:04:46,028 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-21 19:04:46,329 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.1.56:64198]
2015-04-21 19:04:48,468 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 19:04:48,469 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@47b269c4
2015-04-21 19:04:48,470 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7c40ffef
2015-04-21 19:04:48,471 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@1e3df614)
2015-04-21 19:04:48,474 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 19:04:55,154 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 19:04:55,297 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /192.168.1.56 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '56.1.168.192.in-addr.arpa'
2015-04-21 19:04:56,295 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 20:20:25,637 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-21 22:08:15,459 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 22:08:16,646 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:08:24,742 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 22:08:24,843 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 22:08:24,862 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 22:08:24,878 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 22:08:24,899 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 22:08:24,914 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    6 | 4MM9gXNr3LkMCSCfCoZcVzaWPJi1Gbpn2Hm1PiIvsSRVONiaSqhSRemUSnkaUZng | (all)
2015-04-21 22:08:24,933 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 22:08:24,934 INFO  io.prediction.tools.console.App$ [main] - Finished listing 6 app(s).
2015-04-21 22:08:29,082 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-21 22:08:29,083 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-21 22:09:10,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:09:10,649 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:09:13,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:09:13,479 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:09:29,648 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:09:29,648 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:09:31,786 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:09:31,787 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:09:47,902 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:09:47,902 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:09:50,727 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:09:50,727 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:10:05,579 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:10:05,580 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:10:09,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:10:09,977 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:10:23,732 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:10:23,732 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:10:28,516 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:10:28,516 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:10:41,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:10:41,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:10:48,020 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:10:48,020 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:10:59,226 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:10:59,227 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:11:05,570 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:11:05,571 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:11:19,280 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:11:19,280 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:11:25,950 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:11:25,950 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:11:40,768 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:11:40,769 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:11:46,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:11:46,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:11:59,751 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-3] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:11:59,752 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-3] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:12:05,259 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-7] - ZooKeeper getData failed after 4 attempts
2015-04-21 22:12:05,259 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-7] - hconnection-0x60c16548-0x14cdf86a6630006, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:12:36,963 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 22:12:38,574 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:12:41,328 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:7070
2015-04-21 22:12:41,329 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Bound received. EventServer is ready.
2015-04-21 22:13:15,736 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 22:13:15,897 INFO  io.prediction.tools.console.App$ [main] -      FinalDeployTest |    4 | 3p42NlUE6uqwOX39vGSd0djm6QvdgiriZ1lmQnzPinPjHiYnaimxr5KP89s9ue53 | (all)
2015-04-21 22:13:15,910 INFO  io.prediction.tools.console.App$ [main] -               MyApp1 |    1 | ddu1ynBz4ONm9bxqPE73RvagJeQNNauZkHU5CsH3h5CFJU6rKM5Kc0uiezP7ZCLw | (all)
2015-04-21 22:13:15,918 INFO  io.prediction.tools.console.App$ [main] -               MyApp2 |    2 | Ou8SV0FJoP84LfSyXy3cBLV2TgWSHV9q2BiNgQLy4Zuji0RiJ6nfNKMp8kUGdC9O | (all)
2015-04-21 22:13:15,935 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 22:13:15,964 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    6 | 4MM9gXNr3LkMCSCfCoZcVzaWPJi1Gbpn2Hm1PiIvsSRVONiaSqhSRemUSnkaUZng | (all)
2015-04-21 22:13:15,989 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 22:13:16,002 INFO  io.prediction.tools.console.App$ [main] - Finished listing 6 app(s).
2015-04-21 22:13:28,164 INFO  io.prediction.tools.console.App$ [main] - The following app will be deleted. Are you sure?
2015-04-21 22:13:28,166 INFO  io.prediction.tools.console.App$ [main] -     App Name: FinalDeployTest
2015-04-21 22:13:28,166 INFO  io.prediction.tools.console.App$ [main] -       App ID: 4
2015-04-21 22:13:28,167 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 22:13:34,831 INFO  io.prediction.tools.console.App$ [main] - Aborted.
2015-04-21 22:13:46,526 INFO  io.prediction.tools.console.App$ [main] - The following app will be deleted. Are you sure?
2015-04-21 22:13:46,528 INFO  io.prediction.tools.console.App$ [main] -     App Name: FinalDeployTest
2015-04-21 22:13:46,528 INFO  io.prediction.tools.console.App$ [main] -       App ID: 4
2015-04-21 22:13:46,529 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 22:13:47,968 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:13:53,992 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_4...
2015-04-21 22:13:59,357 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 4
2015-04-21 22:13:59,373 INFO  io.prediction.tools.console.App$ [main] - Deleted app FinalDeployTest.
2015-04-21 22:13:59,475 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 22:14:10,541 INFO  io.prediction.tools.console.App$ [main] - The following app will be deleted. Are you sure?
2015-04-21 22:14:10,543 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyApp1
2015-04-21 22:14:10,544 INFO  io.prediction.tools.console.App$ [main] -       App ID: 1
2015-04-21 22:14:10,544 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 22:14:16,265 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:14:22,354 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_1...
2015-04-21 22:14:32,784 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 1
2015-04-21 22:14:32,806 INFO  io.prediction.tools.console.App$ [main] - Deleted app MyApp1.
2015-04-21 22:14:32,909 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 22:14:52,504 INFO  io.prediction.tools.console.App$ [main] - The following app will be deleted. Are you sure?
2015-04-21 22:14:52,506 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyApp2
2015-04-21 22:14:52,507 INFO  io.prediction.tools.console.App$ [main] -       App ID: 2
2015-04-21 22:14:52,508 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 22:14:54,642 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:14:55,676 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_2...
2015-04-21 22:15:01,520 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 2
2015-04-21 22:15:01,531 INFO  io.prediction.tools.console.App$ [main] - Deleted app MyApp2.
2015-04-21 22:15:01,642 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 22:15:12,418 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 22:15:12,474 INFO  io.prediction.tools.console.App$ [main] -               PTest1 |    3 | TO4tXr8YDZHdzWo3EH0KMtE8JwOP0GEz8gqVEpVB31GzNHD6ILSJNLXNlNrZNTBn | (all)
2015-04-21 22:15:12,498 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    6 | 4MM9gXNr3LkMCSCfCoZcVzaWPJi1Gbpn2Hm1PiIvsSRVONiaSqhSRemUSnkaUZng | (all)
2015-04-21 22:15:12,509 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    5 | IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK | (all)
2015-04-21 22:15:12,510 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-21 22:15:23,941 INFO  io.prediction.tools.console.App$ [main] - The following app will be deleted. Are you sure?
2015-04-21 22:15:23,943 INFO  io.prediction.tools.console.App$ [main] -     App Name: PTest1
2015-04-21 22:15:23,944 INFO  io.prediction.tools.console.App$ [main] -       App ID: 3
2015-04-21 22:15:23,945 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 22:15:26,214 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:15:37,186 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_3...
2015-04-21 22:15:42,552 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 3
2015-04-21 22:15:42,562 INFO  io.prediction.tools.console.App$ [main] - Deleted app PTest1.
2015-04-21 22:15:42,672 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 22:15:55,961 INFO  io.prediction.tools.console.App$ [main] - The following app will be deleted. Are you sure?
2015-04-21 22:15:55,963 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp
2015-04-21 22:15:55,964 INFO  io.prediction.tools.console.App$ [main] -       App ID: 6
2015-04-21 22:15:55,964 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 22:15:58,135 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:15:59,129 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_6...
2015-04-21 22:16:04,483 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 6
2015-04-21 22:16:04,493 INFO  io.prediction.tools.console.App$ [main] - Deleted app TextApp.
2015-04-21 22:16:04,604 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 22:16:17,741 INFO  io.prediction.tools.console.App$ [main] - The following app will be deleted. Are you sure?
2015-04-21 22:16:17,743 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-21 22:16:17,744 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-21 22:16:17,744 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-21 22:16:20,469 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:16:21,504 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-21 22:16:27,048 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-21 22:16:27,058 INFO  io.prediction.tools.console.App$ [main] - Deleted app TextApp1.
2015-04-21 22:16:27,168 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-21 22:17:29,191 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 22:17:29,194 INFO  io.prediction.tools.console.App$ [main] - Finished listing 0 app(s).
2015-04-21 22:17:48,968 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:17:55,032 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_7 doesn't exist yet. Creating now...
2015-04-21 22:18:05,513 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 7.
2015-04-21 22:18:05,535 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-04-21 22:18:05,535 INFO  io.prediction.tools.console.App$ [main] -       Name: TextApp1
2015-04-21 22:18:05,536 INFO  io.prediction.tools.console.App$ [main] -         ID: 7
2015-04-21 22:18:05,536 INFO  io.prediction.tools.console.App$ [main] - Access Key: tTPBbTo25DDGz4fjwIauNAo8rQaED6bgd7XVidv7ytMucwcY1RIWpuHE5NXP2Nix
2015-04-21 22:19:19,357 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [hconnection-0x60c16548-shared--pool1-t3] - Encountered problems when prefetch hbase:meta table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in hbase:meta for table: predictionio_eventdata:events_5, row=predictionio_eventdata:events_5,b\xB1Ms\xD0\xA6G\xD3\xFBC\xD3\xFB\xAD-\xAE\xEF\x00\x00\x01L\xDF\x90\xEC\xB9\xB7\xD2x\xAB\x16\xF9\x05\xDC,99999999999999
	at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:146)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1153)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1217)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:507)
	at org.apache.hadoop.hbase.client.AsyncProcess.logAndResubmit(AsyncProcess.java:717)
	at org.apache.hadoop.hbase.client.AsyncProcess.receiveMultiAction(AsyncProcess.java:813)
	at org.apache.hadoop.hbase.client.AsyncProcess.access$300(AsyncProcess.java:93)
	at org.apache.hadoop.hbase.client.AsyncProcess$1.run(AsyncProcess.java:560)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)
2015-04-21 22:19:19,376 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-11] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse                    Mail:  rj@ri.cadre.com\nCadr...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: predictionio_eventdata:events_5: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:20:39,210 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 22:20:43,121 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:20:48,578 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-21 22:20:48,579 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-21 22:20:53,970 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [EventServerSystem-akka.actor.default-dispatcher-4] - Encountered problems when prefetch hbase:meta table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in hbase:meta for table: predictionio_eventdata:events_5, row=predictionio_eventdata:events_5,b\xB1Ms\xD0\xA6G\xD3\xFBC\xD3\xFB\xAD-\xAE\xEF\x00\x00\x01L\xDF\x92[\xBD\x96[I\xED\x14\xCA\xA4?,99999999999999
	at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:146)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1153)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1217)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:20:54,003 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-2] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "entityId": 1, "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse                    Ma...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: predictionio_eventdata:events_5: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:23:45,489 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [EventServerSystem-akka.actor.default-dispatcher-9] - Encountered problems when prefetch hbase:meta table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in hbase:meta for table: predictionio_eventdata:events_5, row=predictionio_eventdata:events_5,b\xB1Ms\xD0\xA6G\xD3\xFBC\xD3\xFB\xAD-\xAE\xEF\x00\x00\x01L\xDF\x94\xFC\xBD\xAB\xBA\x5C\xFB\xE7%rf,99999999999999
	at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:146)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1153)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1217)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:23:45,493 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-5] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "event": "documents", "entityId": 1, "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: predictionio_eventdata:events_5: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:47:44,056 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 22:47:45,227 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:47:52,522 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-21 22:47:52,523 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-21 22:48:04,020 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [EventServerSystem-akka.actor.default-dispatcher-2] - Encountered problems when prefetch hbase:meta table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in hbase:meta for table: predictionio_eventdata:events_5, row=predictionio_eventdata:events_5,b\xB1Ms\xD0\xA6G\xD3\xFBC\xD3\xFB\xAD-\xAE\xEF\x00\x00\x01L\xDF\xAB<\xE1\x85\xD4\xBB\x03\xA5\x9C\xFB',99999999999999
	at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:146)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1153)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1217)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:48:04,033 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-4] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "event": "documents", "properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse  ...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: predictionio_eventdata:events_5: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:48:48,310 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [EventServerSystem-akka.actor.default-dispatcher-9] - Encountered problems when prefetch hbase:meta table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in hbase:meta for table: predictionio_eventdata:events_5, row=predictionio_eventdata:events_5,b\xB1Ms\xD0\xA6G\xD3\xFBC\xD3\xFB\xAD-\xAE\xEF\x00\x00\x01L\xDF\xAB\xEB\x1D\xACbDP\x977\x9Es,99999999999999
	at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:146)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1153)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1217)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:48:48,314 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-5] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"eventTime": "2015-04-22T05:48:48.285+0000", "event": "documents", "entityId": 1, "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfusca...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: predictionio_eventdata:events_5: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:49:23,526 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 22:49:24,791 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 22:49:27,083 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-21 22:49:27,084 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-21 22:49:37,956 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [EventServerSystem-akka.actor.default-dispatcher-3] - Encountered problems when prefetch hbase:meta table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in hbase:meta for table: predictionio_eventdata:events_5, row=predictionio_eventdata:events_5,b\xB1Ms\xD0\xA6G\xD3\xFBC\xD3\xFB\xAD-\xAE\xEF\x00\x00\x01L\xDF\xAC\xAB\xDD\xBA!\xC8\xDD:\x00\xAF\xE9,99999999999999
	at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:146)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1153)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1217)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:49:37,969 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-2] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityId": 1, "event": "documents", "properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse           ...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: predictionio_eventdata:events_5: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:56:07,377 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [EventServerSystem-akka.actor.default-dispatcher-9] - Encountered problems when prefetch hbase:meta table: 
org.apache.hadoop.hbase.TableNotFoundException: Cannot find row in hbase:meta for table: predictionio_eventdata:events_5, row=predictionio_eventdata:events_5,b\xB1Ms\xD0\xA6G\xD3\xFBC\xD3\xFB\xAD-\xAE\xEF\x00\x00\x01L\xDF\xB2\x9E?\xB7\xFA)K\x1D<\xD7\x15,99999999999999
	at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:146)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1153)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1217)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 22:56:07,381 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-5] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=IHeGYSNna0a1vNPnk9TNulOW1qzIhrI23JiMurUKK555ePCOzdCOFInZ0iS6cMdK,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "event": "documents", "entityId": 1, "eventTime": "2015-04-22T05:56:07.359+0000", "properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to s...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: predictionio_eventdata:events_5: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-21 23:02:25,081 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-21 23:02:26,652 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 23:02:28,990 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:7070
2015-04-21 23:02:28,991 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Bound received. EventServer is ready.
2015-04-21 23:05:06,126 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-21 23:05:06,252 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    7 | tTPBbTo25DDGz4fjwIauNAo8rQaED6bgd7XVidv7ytMucwcY1RIWpuHE5NXP2Nix | (all)
2015-04-21 23:05:06,253 INFO  io.prediction.tools.console.App$ [main] - Finished listing 1 app(s).
2015-04-21 23:05:17,469 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 23:05:17,515 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-21 23:05:17,515 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-21 23:05:17,516 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-21 23:05:17,517 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-21 23:05:31,631 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-21 23:05:31,632 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-21 23:05:31,639 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 23:05:31,640 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 23:05:31,648 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-21 23:05:33,249 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 23:05:33,352 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-21 23:05:33,435 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-21 23:05:33,458 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-21 23:05:33,550 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-21 23:05:38,119 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-21 23:05:39,771 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 23:05:39,900 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-21 23:05:41,930 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 23:05:42,959 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-21 23:05:43,070 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 23:05:43,085 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-21 23:05:43,086 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-21 23:05:43,087 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-21 23:05:43,088 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-21 23:05:43,094 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-21 23:05:43,095 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-21 23:05:44,884 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 23:05:45,120 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@calvisitor-10-105-139-9.calvisitor.1918.berkeley.edu:49747]
2015-04-21 23:05:46,677 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-21 23:05:46,678 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@47b269c4
2015-04-21 23:05:46,679 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7c40ffef
2015-04-21 23:05:46,679 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@1e3df614)
2015-04-21 23:05:46,680 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-21 23:05:48,004 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-21 23:05:59,992 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-21 23:06:08,627 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-21 23:06:08,628 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-21 23:06:08,629 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUzfu2tqdR2XI-DnFBQn
2015-04-21 23:06:08,642 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-21 23:06:08,797 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-21 23:06:08,823 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-21 23:06:16,698 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUzfu2tqdR2XI-DnFBQn --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --engineInstanceId AUzfu2tqdR2XI-DnFBQn --ip localhost --port 8000 --event-server-ip localhost --event-server-port 7070
2015-04-21 23:06:20,476 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-21 23:06:20,885 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-21 23:06:21,052 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@calvisitor-10-105-139-9.calvisitor.1918.berkeley.edu:49789]
2015-04-21 23:06:21,349 WARN  org.apache.hadoop.util.NativeCodeLoader [pio-server-akka.actor.default-dispatcher-4] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-21 23:06:22,251 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Using persisted model
2015-04-21 23:06:22,253 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Loaded model TextManipulationEngine.SupervisedModel for algorithm TextManipulationEngine.SupervisedAlgorithm
2015-04-21 23:06:22,269 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Undeploying any existing engine instance at http://localhost:8000
2015-04-21 23:06:22,289 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Nothing at http://localhost:8000
2015-04-21 23:06:23,179 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-4] - Bound to localhost/127.0.0.1:8000
2015-04-21 23:06:23,180 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-5] - Bind successful. Ready to serve.
2015-04-22 00:50:57,326 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-22 12:42:53,146 WARN  org.elasticsearch.common [main] - Unable to get a valid mac address, will use a dummy address
2015-04-22 12:42:55,123 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-22 12:42:55,240 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    7 | tTPBbTo25DDGz4fjwIauNAo8rQaED6bgd7XVidv7ytMucwcY1RIWpuHE5NXP2Nix | (all)
2015-04-22 12:42:55,241 INFO  io.prediction.tools.console.App$ [main] - Finished listing 1 app(s).
2015-04-22 15:18:53,484 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-22 15:18:53,485 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-22 15:18:53,486 INFO  io.prediction.tools.console.App$ [main] -       App ID: 7
2015-04-22 15:18:53,486 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-22 15:18:56,314 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:19:01,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-22 15:19:01,725 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x4beeb0e, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:149)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:73)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:88)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:181)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:166)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:274)
	at io.prediction.tools.console.App$$anonfun$dataDelete$2.apply(App.scala:147)
	at io.prediction.tools.console.App$$anonfun$dataDelete$2.apply(App.scala:139)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.App$.dataDelete(App.scala:139)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:626)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:577)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:577)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-22 15:19:01,728 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:149)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:73)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:88)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:88)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:181)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:166)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:274)
	at io.prediction.tools.console.App$$anonfun$dataDelete$2.apply(App.scala:147)
	at io.prediction.tools.console.App$$anonfun$dataDelete$2.apply(App.scala:139)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.App$.dataDelete(App.scala:139)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:626)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:577)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:577)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-22 15:19:02,930 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-22 15:19:02,938 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-22 15:19:02,939 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-22 15:19:39,322 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-22 15:19:40,662 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:19:41,550 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-22 15:19:41,551 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-22 15:19:41,552 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server 10.0.22.139/10.0.22.139:50841 is not running yet
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:98)
	at org.apache.hadoop.hbase.ipc.FifoRpcScheduler$1.run(FifoRpcScheduler.java:74)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	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)

2015-04-22 15:19:52,762 INFO  io.prediction.tools.console.App$ [main] - The data of the following app will be deleted. Are you sure?
2015-04-22 15:19:52,764 INFO  io.prediction.tools.console.App$ [main] -     App Name: TextApp1
2015-04-22 15:19:52,764 INFO  io.prediction.tools.console.App$ [main] -       App ID: 7
2015-04-22 15:19:52,765 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-22 15:19:54,741 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:20:16,347 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_7...
2015-04-22 15:20:21,697 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 7
2015-04-22 15:20:21,869 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_7 doesn't exist yet. Creating now...
2015-04-22 15:20:27,241 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 7.
2015-04-22 15:20:27,343 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-22 15:20:37,085 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-22 15:20:37,160 INFO  io.prediction.tools.console.App$ [main] -             TextApp1 |    7 | tTPBbTo25DDGz4fjwIauNAo8rQaED6bgd7XVidv7ytMucwcY1RIWpuHE5NXP2Nix | (all)
2015-04-22 15:20:37,161 INFO  io.prediction.tools.console.App$ [main] - Finished listing 1 app(s).
2015-04-22 15:21:52,836 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-22 15:21:54,035 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:21:56,463 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-22 15:21:56,464 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-22 15:22:44,122 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:22:44,168 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 15:22:44,169 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 15:22:44,169 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 15:22:44,170 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 15:23:02,384 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(*:[31mupdate[0m) sbt.ResolveException: unresolved dependency: org.scalanlp#breeze;0.11.2: not found[0m
2015-04-22 15:23:02,387 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 9 s, completed Apr 22, 2015 3:23:02 PM[0m
2015-04-22 15:23:02,430 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-04-22 15:23:52,434 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:23:52,655 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 15:23:52,682 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 15:23:52,687 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 15:23:52,701 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 15:25:21,664 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 15:25:21,665 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 15:25:21,678 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:25:21,679 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:25:21,693 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 15:25:33,113 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:25:34,063 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:25:34,457 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:25:34,677 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 15:25:34,965 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 15:29:19,069 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:29:19,117 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 15:29:19,118 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 15:29:19,119 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 15:29:19,119 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 15:29:28,753 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/TextManipulationEngine/src/main/scala/TextManipulationEngine/SupervisedModel.scala:36: value sums is not a member of Array[Double][0m
2015-04-22 15:29:28,753 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m    val C = x.map(e => e._2).sums[0m
2015-04-22 15:29:28,754 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m                             ^[0m
2015-04-22 15:29:28,832 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mone error found[0m
2015-04-22 15:29:28,865 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(compile:[31mcompile[0m) Compilation failed[0m
2015-04-22 15:29:28,872 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 3 s, completed Apr 22, 2015 3:29:28 PM[0m
2015-04-22 15:29:28,973 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-04-22 15:36:57,383 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:36:57,421 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 15:36:57,422 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 15:36:57,425 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 15:36:57,426 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 15:37:10,701 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 15:37:10,701 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 15:37:10,709 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:37:10,709 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:37:10,715 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 15:37:12,334 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:37:12,430 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:37:12,503 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:37:12,515 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 15:37:12,536 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 15:37:16,935 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:37:18,653 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:37:18,782 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 15:37:20,857 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:37:21,865 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 15:37:21,974 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:37:21,988 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 15:37:21,989 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 15:37:21,990 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:37:21,992 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 15:37:21,998 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 15:37:21,999 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 15:37:23,817 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 15:37:24,044 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51105]
2015-04-22 15:37:25,577 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 15:37:25,580 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1983b48a
2015-04-22 15:37:25,582 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@4391a2d8
2015-04-22 15:37:25,584 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@32091c14)
2015-04-22 15:37:25,588 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 15:37:26,870 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 15:40:32,292 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:40:33,981 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:40:34,095 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 15:40:35,874 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:40:36,709 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 15:40:36,800 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:40:36,825 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 15:40:36,825 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 15:40:36,826 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:40:36,831 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 15:40:36,840 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 15:40:36,842 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 15:40:38,481 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 15:40:38,657 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51158]
2015-04-22 15:40:39,602 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 15:40:39,603 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@b791a81
2015-04-22 15:40:39,604 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@71e7adbb
2015-04-22 15:40:39,605 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@286855ea)
2015-04-22 15:40:39,606 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 15:40:45,982 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 15:40:51,587 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:40:51,635 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 15:40:51,635 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 15:40:51,636 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 15:40:51,637 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 15:41:06,091 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 15:41:06,092 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 15:41:06,099 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:41:06,099 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:41:06,107 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 15:41:07,767 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:41:07,877 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:41:07,956 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:41:07,968 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 15:41:07,991 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 15:41:11,356 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:41:13,045 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:41:13,163 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 15:41:14,962 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:41:15,793 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 15:41:15,886 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:41:15,897 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 15:41:15,898 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 15:41:15,898 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:41:15,901 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 15:41:15,905 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 15:41:15,907 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 15:41:17,545 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 15:41:17,713 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51211]
2015-04-22 15:41:18,731 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 15:41:18,731 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1983b48a
2015-04-22 15:41:18,732 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@4391a2d8
2015-04-22 15:41:18,732 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@32091c14)
2015-04-22 15:41:18,733 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 15:41:30,206 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 15:41:35,437 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 15:42:04,939 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 15:46:18,629 WARN  org.apache.hadoop.hbase.client.ScannerCallable [Executor task launch worker-0] - Ignore, probably already closed
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 20, already closed?
	at org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3183)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:30808)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2029)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

	at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1457)
	at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1661)
	at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1719)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:29990)
	at org.apache.hadoop.hbase.client.ScannerCallable.close(ScannerCallable.java:291)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:160)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:59)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:90)
	at org.apache.hadoop.hbase.client.ClientScanner.close(ClientScanner.java:450)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.close(TableRecordReaderImpl.java:161)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReader.close(TableRecordReader.java:80)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1.org$apache$spark$rdd$NewHadoopRDD$$anon$$close(NewHadoopRDD.scala:172)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$2.apply(NewHadoopRDD.scala:138)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$2.apply(NewHadoopRDD.scala:138)
	at org.apache.spark.TaskContextImpl$$anon$1.onTaskCompletion(TaskContextImpl.scala:49)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:68)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:66)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:66)
	at org.apache.spark.scheduler.Task.run(Task.scala:58)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 15:46:18,636 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 2.0 (TID 2)
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:57)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:66)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:66)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 15:46:18,647 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:57)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:66)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:66)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 15:46:18,653 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 0.0 in stage 2.0 (TID 2, localhost): java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:57)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:66)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:66)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)

2015-04-22 15:46:18,654 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Task 0 in stage 2.0 failed 1 times; aborting job
2015-04-22 15:49:31,628 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:49:31,665 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 15:49:31,666 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 15:49:31,669 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 15:49:31,669 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 15:49:44,107 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 15:49:44,107 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 15:49:44,114 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:49:44,114 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:49:44,121 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 15:49:45,816 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:49:45,912 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 15:49:46,000 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 15:49:46,013 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 15:49:46,038 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 15:49:48,939 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 15:49:50,615 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:49:50,733 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 15:49:52,669 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 15:49:53,543 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 15:49:53,628 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:49:53,639 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 15:49:53,640 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 15:49:53,640 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 15:49:53,643 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 15:49:53,648 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 15:49:53,649 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 15:49:55,316 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 15:49:55,493 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51310]
2015-04-22 15:49:56,464 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 15:49:56,465 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@59fc6d05
2015-04-22 15:49:56,466 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@23ad71bf
2015-04-22 15:49:56,467 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@b791a81)
2015-04-22 15:49:56,468 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 15:50:07,821 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 15:50:07,977 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 15:50:36,843 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 15:54:33,402 WARN  org.apache.hadoop.hbase.client.ScannerCallable [Executor task launch worker-0] - Ignore, probably already closed
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 27, already closed?
	at org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3183)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:30808)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2029)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

	at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1457)
	at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1661)
	at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1719)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:29990)
	at org.apache.hadoop.hbase.client.ScannerCallable.close(ScannerCallable.java:291)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:160)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:59)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:90)
	at org.apache.hadoop.hbase.client.ClientScanner.close(ClientScanner.java:450)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.close(TableRecordReaderImpl.java:161)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReader.close(TableRecordReader.java:80)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1.org$apache$spark$rdd$NewHadoopRDD$$anon$$close(NewHadoopRDD.scala:172)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$2.apply(NewHadoopRDD.scala:138)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$2.apply(NewHadoopRDD.scala:138)
	at org.apache.spark.TaskContextImpl$$anon$1.onTaskCompletion(TaskContextImpl.scala:49)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:68)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:66)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:66)
	at org.apache.spark.scheduler.Task.run(Task.scala:58)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 15:54:33,405 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 2.0 (TID 2)
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 15:54:33,414 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 15:54:33,418 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 0.0 in stage 2.0 (TID 2, localhost): java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)

2015-04-22 15:54:33,419 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Task 0 in stage 2.0 failed 1 times; aborting job
2015-04-22 16:01:36,016 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:01:36,070 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 16:01:36,071 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 16:01:36,072 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 16:01:36,072 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 16:01:46,031 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 16:01:46,032 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 16:01:46,040 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:01:46,040 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:01:46,048 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 16:01:48,092 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:01:48,211 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:01:48,287 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:01:48,313 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 16:01:48,339 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 16:01:52,321 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:01:54,009 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:01:54,125 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:01:56,166 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:01:57,169 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:01:57,280 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:01:57,295 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:01:57,295 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:01:57,296 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:01:57,299 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:01:57,304 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:01:57,305 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:01:59,051 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 16:01:59,291 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51473]
2015-04-22 16:02:00,858 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:02:00,858 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@59fc6d05
2015-04-22 16:02:00,858 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@23ad71bf
2015-04-22 16:02:00,859 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@b791a81)
2015-04-22 16:02:00,859 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:02:12,155 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:02:12,297 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:02:39,247 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 16:05:23,334 WARN  org.apache.hadoop.hbase.client.ScannerCallable [Executor task launch worker-0] - Ignore, probably already closed
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 36, already closed?
	at org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3183)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:30808)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2029)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

	at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1457)
	at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1661)
	at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1719)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:29990)
	at org.apache.hadoop.hbase.client.ScannerCallable.close(ScannerCallable.java:291)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:160)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:59)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:90)
	at org.apache.hadoop.hbase.client.ClientScanner.close(ClientScanner.java:450)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.close(TableRecordReaderImpl.java:161)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReader.close(TableRecordReader.java:80)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1.org$apache$spark$rdd$NewHadoopRDD$$anon$$close(NewHadoopRDD.scala:172)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$2.apply(NewHadoopRDD.scala:138)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$2.apply(NewHadoopRDD.scala:138)
	at org.apache.spark.TaskContextImpl$$anon$1.onTaskCompletion(TaskContextImpl.scala:49)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:68)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:66)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:66)
	at org.apache.spark.scheduler.Task.run(Task.scala:58)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 16:05:23,337 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 2.0 (TID 2)
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 16:05:23,347 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)
2015-04-22 16:05:23,355 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 0.0 in stage 2.0 (TID 2, localhost): java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:56)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:200)
	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)

2015-04-22 16:05:23,361 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Task 0 in stage 2.0 failed 1 times; aborting job
2015-04-22 16:13:11,392 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:13:13,036 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:13:13,143 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --master spark://localhost:7077 --driver-memory 6G --executor-memory 8G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:13:14,886 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:13:15,704 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:13:15,780 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:13:15,791 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:13:15,791 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:13:15,792 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:13:15,794 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:13:15,799 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:13:15,801 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:13:17,375 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 16:13:17,543 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51657]
2015-04-22 16:13:18,323 WARN  org.apache.spark.deploy.client.AppClient$ClientActor [sparkDriver-akka.actor.default-dispatcher-3] - Could not connect to akka.tcp://sparkMaster@localhost:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://sparkMaster@localhost:7077
2015-04-22 16:13:18,333 WARN  Remoting [sparkDriver-akka.actor.default-dispatcher-13] - Tried to associate with unreachable remote address [akka.tcp://sparkMaster@localhost:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: localhost/127.0.0.1:7077
2015-04-22 16:13:38,257 WARN  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Tried to associate with unreachable remote address [akka.tcp://sparkMaster@localhost:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: localhost/127.0.0.1:7077
2015-04-22 16:13:38,257 WARN  org.apache.spark.deploy.client.AppClient$ClientActor [sparkDriver-akka.actor.default-dispatcher-2] - Could not connect to akka.tcp://sparkMaster@localhost:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://sparkMaster@localhost:7077
2015-04-22 16:17:13,321 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:17:13,375 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 16:17:13,375 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 16:17:13,376 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 16:17:13,377 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 16:17:21,175 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 16:17:21,176 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 16:17:21,184 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:17:21,184 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:17:21,192 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 16:17:23,286 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:17:23,404 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:17:23,480 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:17:23,501 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 16:17:23,531 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 16:17:35,107 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:17:36,746 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:17:36,863 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: ./bin/spark-submit --master spark://localhost:7077 --driver-memory 6G --executor-memory 8G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:21:08,641 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:21:10,276 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:21:10,400 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/../usr/local/Cellar/apache-spark/1.3.0/bin/spark-submit --master spark://localhost:7077 --driver-memory 6G --executor-memory 8G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:21:12,433 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:21:13,429 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:21:13,535 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:21:13,550 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:21:13,551 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:21:13,552 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:21:13,554 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:21:13,560 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:21:13,561 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:21:15,344 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-22 16:21:15,563 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51723]
2015-04-22 16:21:15,784 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:21:15,807 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:51724
2015-04-22 16:21:15,951 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:21:15,966 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:21:16,849 WARN  org.apache.spark.deploy.client.AppClient$ClientActor [sparkDriver-akka.actor.default-dispatcher-3] - Could not connect to akka.tcp://sparkMaster@localhost:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://sparkMaster@localhost:7077
2015-04-22 16:21:16,857 WARN  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Tried to associate with unreachable remote address [akka.tcp://sparkMaster@localhost:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: localhost/127.0.0.1:7077
2015-04-22 16:21:36,790 WARN  org.apache.spark.deploy.client.AppClient$ClientActor [sparkDriver-akka.actor.default-dispatcher-4] - Could not connect to akka.tcp://sparkMaster@localhost:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://sparkMaster@localhost:7077
2015-04-22 16:21:36,791 WARN  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Tried to associate with unreachable remote address [akka.tcp://sparkMaster@localhost:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: localhost/127.0.0.1:7077
2015-04-22 16:21:56,790 WARN  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Tried to associate with unreachable remote address [akka.tcp://sparkMaster@localhost:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: localhost/127.0.0.1:7077
2015-04-22 16:21:56,791 WARN  org.apache.spark.deploy.client.AppClient$ClientActor [sparkDriver-akka.actor.default-dispatcher-14] - Could not connect to akka.tcp://sparkMaster@localhost:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://sparkMaster@localhost:7077
2015-04-22 16:22:16,794 ERROR org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend [sparkDriver-akka.actor.default-dispatcher-14] - Application has been killed. Reason: All masters are unresponsive! Giving up.
2015-04-22 16:22:16,794 WARN  org.apache.spark.scheduler.cluster.SparkDeploySchedulerBackend [main] - Application ID is not initialized yet.
2015-04-22 16:22:16,795 ERROR org.apache.spark.scheduler.TaskSchedulerImpl [sparkDriver-akka.actor.default-dispatcher-14] - Exiting due to error from cluster scheduler: All masters are unresponsive! Giving up.
2015-04-22 16:25:40,103 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:25:41,741 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:25:41,850 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/../usr/local/Cellar/apache-spark/1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 6G --executor-memory 8G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:25:43,628 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:25:44,448 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:25:44,524 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:25:44,536 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:25:44,536 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:25:44,537 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:25:44,539 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:25:44,544 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:25:44,545 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:25:46,146 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 16:25:46,329 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51792]
2015-04-22 16:25:46,501 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:25:46,521 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:51793
2015-04-22 16:25:46,645 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:25:46,657 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:25:47,747 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:25:47,748 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@577536e0
2015-04-22 16:25:47,748 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7f0b93b4
2015-04-22 16:25:47,749 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@523a7801)
2015-04-22 16:25:47,749 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:25:54,295 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:25:54,446 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:26:09,572 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:26:24,572 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:26:39,572 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:26:54,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:27:09,572 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:27:24,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:27:39,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:27:54,570 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:28:09,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:28:24,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:28:39,572 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:28:54,572 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:29:09,572 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:29:24,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:29:39,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:29:54,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:30:09,571 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:30:44,321 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:30:46,485 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:30:46,631 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/../usr/local/Cellar/apache-spark/1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 4G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:30:48,693 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:30:49,717 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:30:49,832 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:30:49,846 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:30:49,847 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:30:49,848 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:30:49,850 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:30:49,856 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:30:49,857 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:30:51,636 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 16:30:51,855 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51938]
2015-04-22 16:30:52,084 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:30:52,109 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:51939
2015-04-22 16:30:52,260 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:30:52,275 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:30:53,613 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:30:53,613 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@577536e0
2015-04-22 16:30:53,613 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7f0b93b4
2015-04-22 16:30:53,614 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@523a7801)
2015-04-22 16:30:53,614 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:30:54,986 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:30:55,127 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:31:10,244 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:31:25,242 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:31:40,243 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:31:55,242 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:32:10,243 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:35:06,647 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:35:08,240 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:35:08,339 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/../usr/local/Cellar/apache-spark/1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:35:10,182 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:35:10,991 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:35:11,069 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:35:11,080 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:35:11,080 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:35:11,081 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:35:11,083 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:35:11,087 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:35:11,089 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:35:12,722 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 16:35:12,895 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52004]
2015-04-22 16:35:13,089 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:35:13,110 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52005
2015-04-22 16:35:13,232 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:35:13,245 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:35:14,260 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:35:14,261 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1376883
2015-04-22 16:35:14,261 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@718fd7c1
2015-04-22 16:35:14,262 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@4e22368c)
2015-04-22 16:35:14,262 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:35:20,659 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:35:20,794 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:35:35,911 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:35:50,910 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:36:05,910 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:36:20,910 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:36:35,911 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:36:50,911 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:37:05,910 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:39:15,630 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:39:15,686 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 16:39:15,687 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 16:39:15,688 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 16:39:15,689 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 16:39:23,412 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 16:39:23,413 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 16:39:23,420 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:39:23,420 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:39:23,428 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 16:39:24,838 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:39:24,937 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:39:25,021 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:39:25,040 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 16:39:47,994 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-22 16:39:49,197 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:39:50,700 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:39:50,747 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 16:39:50,748 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 16:39:50,748 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 16:39:50,749 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 16:39:57,936 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-5] - Bound to /0.0.0.0:7070
2015-04-22 16:39:57,937 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-5] - Bound received. EventServer is ready.
2015-04-22 16:39:58,862 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 16:39:58,863 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 16:39:58,869 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:39:58,869 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:39:58,876 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 16:40:00,498 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:40:00,606 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:40:00,690 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:40:00,703 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 16:40:00,741 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 16:40:04,476 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:40:06,120 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:40:06,246 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:40:08,037 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:40:08,874 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:40:08,954 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:40:08,965 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:40:08,965 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:40:08,966 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:40:08,968 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:40:08,972 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:40:08,973 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:40:10,636 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 16:40:10,800 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52117]
2015-04-22 16:40:10,972 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:40:10,990 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52118
2015-04-22 16:40:11,100 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:40:11,112 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:40:11,790 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:40:11,791 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1de4bee0
2015-04-22 16:40:11,792 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@1e01b133
2015-04-22 16:40:11,793 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@6b4125ed)
2015-04-22 16:40:11,793 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:40:23,089 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:40:23,256 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:40:53,657 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 16:43:33,183 WARN  org.apache.hadoop.hbase.client.ScannerCallable [Executor task launch worker-0] - Ignore, probably already closed
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 13, already closed?
	at org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3183)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:30808)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2029)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

	at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1457)
	at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1661)
	at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1719)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:29990)
	at org.apache.hadoop.hbase.client.ScannerCallable.close(ScannerCallable.java:291)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:160)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:59)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:90)
	at org.apache.hadoop.hbase.client.ClientScanner.close(ClientScanner.java:450)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.close(TableRecordReaderImpl.java:161)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReader.close(TableRecordReader.java:80)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1.org$apache$spark$rdd$NewHadoopRDD$$anon$$close(NewHadoopRDD.scala:162)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$3.apply(NewHadoopRDD.scala:136)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$3.apply(NewHadoopRDD.scala:136)
	at org.apache.spark.TaskContextImpl$$anon$1.onTaskCompletion(TaskContextImpl.scala:54)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:73)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:71)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:71)
	at org.apache.spark.scheduler.Task.run(Task.scala:66)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-22 16:43:33,186 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 2.0 (TID 2)
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-22 16:43:33,201 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-22 16:43:33,207 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 0.0 in stage 2.0 (TID 2, localhost): java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)

2015-04-22 16:43:33,209 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Task 0 in stage 2.0 failed 1 times; aborting job
2015-04-22 16:45:09,060 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:45:10,724 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:45:10,845 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:45:12,673 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:45:13,482 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:45:13,559 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:45:13,570 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:45:13,570 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:45:13,571 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:45:13,573 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:45:13,578 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:45:13,579 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:45:15,194 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-22 16:45:15,382 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52186]
2015-04-22 16:45:15,605 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:45:15,641 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52187
2015-04-22 16:45:15,790 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:45:15,806 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:45:16,854 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:45:16,855 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@523a7801
2015-04-22 16:45:16,856 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@4f59a516
2015-04-22 16:45:16,857 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3c770db4)
2015-04-22 16:45:16,858 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:45:18,436 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:45:18,579 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:45:33,686 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:45:48,686 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:46:03,685 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:46:18,685 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:46:33,686 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:46:48,686 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:47:03,686 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:47:34,237 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:47:35,883 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:47:35,997 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 1G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:47:37,781 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:47:38,592 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:47:38,673 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:47:38,684 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:47:38,684 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:47:38,685 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:47:38,687 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:47:38,692 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:47:38,693 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:47:40,331 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-22 16:47:40,515 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52271]
2015-04-22 16:47:40,744 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:47:40,763 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52272
2015-04-22 16:47:40,876 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:47:40,890 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:47:41,768 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:47:41,769 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@523a7801
2015-04-22 16:47:41,770 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@4f59a516
2015-04-22 16:47:41,771 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3c770db4)
2015-04-22 16:47:41,771 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:47:58,290 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:47:58,430 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:48:13,527 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:48:28,526 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:48:43,526 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:48:58,526 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:49:13,527 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:49:28,526 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:49:43,527 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:49:58,527 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 16:53:25,122 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:53:25,174 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 16:53:25,174 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 16:53:25,175 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 16:53:25,176 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 16:53:31,795 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 16:53:31,796 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 16:53:31,803 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:53:31,803 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:53:31,811 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 16:53:33,404 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:53:33,506 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 16:53:33,579 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 16:53:33,596 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 16:53:33,625 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 16:53:37,332 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 16:53:39,005 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:53:39,136 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 16:53:40,934 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 16:53:41,760 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 16:53:41,837 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:53:41,847 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 16:53:41,848 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 16:53:41,848 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 16:53:41,850 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 16:53:41,855 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 16:53:41,856 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 16:53:43,498 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 16:53:43,671 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52354]
2015-04-22 16:53:43,848 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:53:43,867 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52355
2015-04-22 16:53:43,972 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 16:53:43,983 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 16:53:44,631 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 16:53:44,632 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@27f3f512
2015-04-22 16:53:44,633 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@122635ef
2015-04-22 16:53:44,634 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@1de4bee0)
2015-04-22 16:53:44,635 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 16:53:50,992 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 16:53:51,146 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 16:54:19,061 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 17:04:38,549 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:04:40,249 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:04:40,358 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 1G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:04:42,177 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:04:42,975 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 17:04:43,053 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:04:43,064 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 17:04:43,065 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 17:04:43,065 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:04:43,067 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 17:04:43,072 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 17:04:43,073 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 17:04:44,688 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 17:04:44,860 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52419]
2015-04-22 17:04:45,030 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:04:45,051 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52420
2015-04-22 17:04:45,161 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:04:45,178 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 17:04:46,130 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 17:04:46,130 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@577536e0
2015-04-22 17:04:46,131 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7f0b93b4
2015-04-22 17:04:46,132 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@523a7801)
2015-04-22 17:04:46,133 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 17:04:52,625 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 17:04:52,778 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 17:05:07,888 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:05:22,887 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:05:37,888 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:05:52,887 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:06:07,887 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:06:22,888 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:06:37,887 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:06:52,888 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:07:07,888 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:07:22,887 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:07:37,072 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:07:38,721 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:07:38,844 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0//bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 1G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:07:40,650 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:07:41,455 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 17:07:41,531 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:07:41,541 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 17:07:41,542 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 17:07:41,543 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:07:41,545 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 17:07:41,549 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 17:07:41,550 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 17:07:43,162 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 17:07:43,334 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52467]
2015-04-22 17:07:43,508 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:07:43,528 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52468
2015-04-22 17:07:43,645 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:07:43,656 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 17:07:44,477 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 17:07:44,478 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@523a7801
2015-04-22 17:07:44,478 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@4f59a516
2015-04-22 17:07:44,479 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3c770db4)
2015-04-22 17:07:44,479 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 17:07:50,816 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 17:07:55,969 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 17:08:11,069 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:08:26,068 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:08:41,067 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:08:56,067 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:09:11,068 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:09:26,068 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:15:00,767 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:15:02,379 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:15:02,480 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: ./bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 1G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:15:35,139 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:15:36,746 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:15:36,861 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: ./bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:16:28,161 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-22 17:16:29,376 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:16:36,569 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:7070
2015-04-22 17:16:36,570 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Bound received. EventServer is ready.
2015-04-22 17:16:39,464 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:16:39,514 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 17:16:39,514 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 17:16:39,515 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 17:16:39,516 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 17:16:46,030 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 17:16:46,031 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 17:16:46,038 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 17:16:46,038 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 17:16:46,045 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 17:16:47,636 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:16:47,743 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 17:16:47,819 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 17:16:47,835 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 17:16:47,954 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 17:16:55,456 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:16:57,103 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:16:57,230 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: ./bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 1G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:18:34,040 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:18:35,699 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:18:35,832 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: ./bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 1G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:18:53,824 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:18:53,870 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 17:18:53,871 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 17:18:53,872 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 17:18:53,873 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 17:19:00,560 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 17:19:00,561 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 17:19:00,567 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 17:19:00,567 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 17:19:00,573 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 17:19:02,167 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:19:02,258 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 17:19:02,330 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 17:19:02,343 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 17:19:02,366 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 17:19:30,896 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:19:32,534 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:19:32,662 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1s/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:20:24,089 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:20:25,774 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:20:25,897 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:20:27,716 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:20:28,689 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 17:20:28,793 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:20:28,806 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 17:20:28,807 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 17:20:28,808 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:20:28,811 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 17:20:28,817 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 17:20:28,818 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 17:20:30,477 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 17:20:30,637 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52675]
2015-04-22 17:20:32,161 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 17:20:32,162 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@4998e74b
2015-04-22 17:20:32,163 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@384fda47
2015-04-22 17:20:32,164 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@433d9680)
2015-04-22 17:20:32,164 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 17:20:43,552 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 17:20:48,843 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 17:21:03,965 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory
2015-04-22 17:21:18,965 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient memory
2015-04-22 17:21:31,780 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:21:33,406 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:21:33,519 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:21:35,247 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:21:36,041 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 17:21:36,115 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:21:36,125 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 17:21:36,126 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 17:21:36,126 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:21:36,129 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 17:21:36,135 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 17:21:36,137 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 17:21:37,733 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 17:21:37,924 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52718]
2015-04-22 17:21:38,859 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 17:21:38,860 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@b791a81
2015-04-22 17:21:38,860 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@71e7adbb
2015-04-22 17:21:38,861 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@286855ea)
2015-04-22 17:21:38,862 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 17:21:45,159 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 17:21:45,323 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 17:22:13,412 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 17:25:56,149 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:25:57,773 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:25:57,890 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.2.1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:25:59,611 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:26:00,400 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 17:26:00,478 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:26:00,489 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 17:26:00,489 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 17:26:00,490 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:26:00,492 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 17:26:00,497 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 17:26:00,498 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 17:26:02,052 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 17:26:02,240 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52764]
2015-04-22 17:26:03,143 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 17:26:03,144 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@b791a81
2015-04-22 17:26:03,145 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@71e7adbb
2015-04-22 17:26:03,145 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@286855ea)
2015-04-22 17:26:03,145 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 17:26:16,065 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:26:17,689 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:26:17,807 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:26:19,536 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:26:20,374 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 17:26:20,447 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:26:20,457 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 17:26:20,457 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 17:26:20,458 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:26:20,461 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 17:26:20,465 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 17:26:20,467 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 17:26:22,060 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-22 17:26:22,246 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52799]
2015-04-22 17:26:22,428 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:26:22,450 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52800
2015-04-22 17:26:22,578 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:26:22,589 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 17:26:23,250 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 17:26:23,251 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1de4bee0
2015-04-22 17:26:23,251 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@1e01b133
2015-04-22 17:26:23,252 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@6b4125ed)
2015-04-22 17:26:23,253 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 17:26:24,537 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 17:26:24,717 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 17:26:52,905 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 17:29:31,198 WARN  org.apache.hadoop.hbase.client.ScannerCallable [Executor task launch worker-0] - Ignore, probably already closed
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 25, already closed?
	at org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3183)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:30808)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2029)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

	at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1457)
	at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1661)
	at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1719)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:29990)
	at org.apache.hadoop.hbase.client.ScannerCallable.close(ScannerCallable.java:291)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:160)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:59)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:90)
	at org.apache.hadoop.hbase.client.ClientScanner.close(ClientScanner.java:450)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.close(TableRecordReaderImpl.java:161)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReader.close(TableRecordReader.java:80)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1.org$apache$spark$rdd$NewHadoopRDD$$anon$$close(NewHadoopRDD.scala:162)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$3.apply(NewHadoopRDD.scala:136)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1$$anonfun$3.apply(NewHadoopRDD.scala:136)
	at org.apache.spark.TaskContextImpl$$anon$1.onTaskCompletion(TaskContextImpl.scala:54)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:73)
	at org.apache.spark.TaskContextImpl$$anonfun$markTaskCompleted$1.apply(TaskContextImpl.scala:71)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at org.apache.spark.TaskContextImpl.markTaskCompleted(TaskContextImpl.scala:71)
	at org.apache.spark.scheduler.Task.run(Task.scala:66)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-22 17:29:31,201 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 2.0 (TID 2)
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-22 17:29:31,213 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-0] - Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-22 17:29:31,218 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 0.0 in stage 2.0 (TID 2, localhost): java.lang.OutOfMemoryError: Java heap space
	at scala.collection.mutable.ArrayBuilder$ofDouble.mkArray(ArrayBuilder.scala:512)
	at scala.collection.mutable.ArrayBuilder$ofDouble.resize(ArrayBuilder.scala:518)
	at scala.collection.mutable.ArrayBuilder$ofDouble.sizeHint(ArrayBuilder.scala:523)
	at scala.collection.mutable.Builder$class.sizeHint(Builder.scala:69)
	at scala.collection.mutable.ArrayBuilder.sizeHint(ArrayBuilder.scala:24)
	at scala.collection.TraversableLike$class.builder$1(TraversableLike.scala:240)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:243)
	at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:108)
	at TextManipulationEngine.DataModel.transform(DataModel.scala:56)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at TextManipulationEngine.DataModel$$anonfun$transformData$1.apply(DataModel.scala:65)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:204)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)

2015-04-22 17:29:31,463 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Task 0 in stage 2.0 failed 1 times; aborting job
2015-04-22 17:31:38,470 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:31:38,515 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 17:31:38,516 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 17:31:38,517 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 17:31:38,517 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 17:31:45,165 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 17:31:45,166 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 17:31:45,174 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 17:31:45,174 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 17:31:45,181 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 17:31:46,853 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:31:46,943 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 17:31:47,096 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 17:31:47,117 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 17:31:47,157 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 17:33:40,947 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 17:33:42,599 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:33:42,710 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 1G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 17:33:44,492 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 17:33:45,305 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 17:33:45,388 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:33:45,398 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 17:33:45,398 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 17:33:45,399 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 17:33:45,401 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 17:33:45,406 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 17:33:45,407 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 17:33:46,989 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 17:33:47,156 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52940]
2015-04-22 17:33:47,335 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:33:47,357 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:52941
2015-04-22 17:33:47,482 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 17:33:47,496 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 17:33:48,485 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 17:33:48,486 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@577536e0
2015-04-22 17:33:48,486 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7f0b93b4
2015-04-22 17:33:48,487 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@523a7801)
2015-04-22 17:33:48,487 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 17:34:00,173 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 17:34:05,386 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 17:34:20,483 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:34:35,483 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 17:34:50,482 WARN  org.apache.spark.scheduler.TaskSchedulerImpl [Timer-0] - Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
2015-04-22 18:08:53,325 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 18:08:53,365 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 18:08:53,365 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 18:08:53,366 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.1.jar is absent.
2015-04-22 18:08:53,367 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 18:09:20,136 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 18:09:20,137 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 18:09:20,145 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 18:09:20,145 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 18:09:20,152 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 18:09:21,780 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 18:09:21,876 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 18:09:21,953 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 18:09:21,967 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 18:09:21,993 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 18:09:49,416 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 18:09:51,180 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 18:09:51,298 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.0/libexec/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-0.98.11/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.1.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-0.98.11,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 18:09:53,233 WARN  org.apache.hadoop.util.NativeCodeLoader [main] - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-04-22 18:09:54,120 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 18:09:54,212 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 18:09:54,224 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 18:09:54,224 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 18:09:54,225 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 18:09:54,227 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 18:09:54,232 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 18:09:54,234 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 18:09:55,930 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 18:09:56,123 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:53261]
2015-04-22 18:09:56,321 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 18:09:56,343 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SocketConnector@0.0.0.0:53262
2015-04-22 18:09:56,466 INFO  org.spark-project.jetty.server.Server [main] - jetty-8.y.z-SNAPSHOT
2015-04-22 18:09:56,480 INFO  org.spark-project.jetty.server.AbstractConnector [main] - Started SelectChannelConnector@0.0.0.0:4040
2015-04-22 18:09:57,639 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 18:09:57,640 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@577536e0
2015-04-22 18:09:57,640 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7f0b93b4
2015-04-22 18:09:57,641 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@523a7801)
2015-04-22 18:09:57,642 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 18:09:59,837 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-22 18:10:00,019 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-22 18:10:25,485 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-22 18:26:46,747 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 18:26:46,760 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-22 18:26:46,794 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 18:26:46,794 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 18:26:46,796 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-22 18:26:46,796 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 18:27:15,118 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 18:27:15,119 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 18:27:15,126 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 18:27:15,126 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 18:27:15,133 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 18:27:16,870 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 18:27:16,955 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 18:27:16,968 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 18:27:16,996 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 18:27:21,612 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 18:27:21,615 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-22 18:27:23,040 ERROR io.prediction.data.storage.elasticsearch.ESEngineManifests [main] - [predictionio_metadata][1] null
2015-04-22 18:27:23,041 ERROR io.prediction.tools.console.Console$ [main] - Engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d cannot be found in the system.
2015-04-22 18:27:23,042 ERROR io.prediction.tools.console.Console$ [main] - Possible reasons:
2015-04-22 18:27:23,042 ERROR io.prediction.tools.console.Console$ [main] - - the engine is not yet built by the 'build' command;
2015-04-22 18:27:23,043 ERROR io.prediction.tools.console.Console$ [main] - - the meta data store is offline.
2015-04-22 18:43:23,734 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 18:43:23,737 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-22 18:43:23,774 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 18:43:23,774 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 18:43:23,775 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-22 18:43:23,776 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 18:43:30,391 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 18:43:30,392 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 18:43:30,398 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 18:43:30,398 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 18:43:30,404 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 18:43:32,065 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 18:43:32,139 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 18:43:32,153 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 18:43:32,928 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 18:43:36,267 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 18:43:36,270 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-22 18:43:38,018 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-22 18:43:40,646 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-22 18:43:40,728 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 18:43:40,741 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(7))
2015-04-22 18:43:40,741 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-22 18:43:40,742 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-22 18:43:40,744 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-22 18:43:40,748 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-22 18:43:40,750 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-22 18:43:42,383 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-22 18:43:42,596 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:55189]
2015-04-22 18:43:43,616 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-22 18:43:43,617 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@50b93353
2015-04-22 18:43:43,617 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@2b736fee
2015-04-22 18:43:43,617 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@456f7d9e)
2015-04-22 18:43:43,618 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-22 18:43:44,620 ERROR io.prediction.data.storage.hbase.HBPEvents [main] - The appId 7 does not exist. Please use valid appId.
2015-04-22 18:43:53,181 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-22 18:43:53,183 INFO  io.prediction.tools.console.App$ [main] - Finished listing 0 app(s).
2015-04-22 23:18:54,136 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-22 23:19:03,777 WARN  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-5] - Bind to /0.0.0.0:7070 failed
2015-04-22 23:19:03,779 ERROR io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-5] - Command failed.
2015-04-22 23:19:19,139 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The namespace predictionio_eventdata doesn't exist yet. Creating now...
2015-04-22 23:19:24,516 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_1 doesn't exist yet. Creating now...
2015-04-22 23:19:29,912 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 1.
2015-04-22 23:19:29,939 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-04-22 23:19:29,940 INFO  io.prediction.tools.console.App$ [main] -       Name: TextApp
2015-04-22 23:19:29,940 INFO  io.prediction.tools.console.App$ [main] -         ID: 1
2015-04-22 23:19:29,941 INFO  io.prediction.tools.console.App$ [main] - Access Key: oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT
2015-04-22 23:20:19,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:20:19,465 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:20:24,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:20:24,535 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:20:37,622 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:20:37,622 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:20:44,230 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:20:44,231 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:20:58,676 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:20:58,676 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:21:03,721 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:21:03,721 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:21:17,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:21:17,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:21:22,426 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:21:22,426 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:21:36,908 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:21:36,908 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:21:42,003 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:21:42,004 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:21:50,017 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-22 23:21:52,019 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-22 23:21:52,020 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-22 23:21:52,020 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-22 23:21:55,177 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:21:55,178 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:21:59,900 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:21:59,900 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:04,983 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-22 23:22:05,126 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-22 23:22:05,127 INFO  io.prediction.tools.console.App$ [main] - Finished listing 1 app(s).
2015-04-22 23:22:12,492 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:12,493 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:18,744 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:18,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:31,072 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:31,072 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:36,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:36,512 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:38,554 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:38,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:46,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:46,167 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:47,816 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-22 23:22:47,847 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-22 23:22:48,074 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-22 23:22:48,074 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-22 23:22:48,077 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-22 23:22:48,079 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-22 23:22:49,751 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:49,752 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:56,722 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:56,723 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:22:59,612 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:22:59,613 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:04,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:04,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:08,916 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:08,916 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:16,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:16,129 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:20,211 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:20,211 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:23,496 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:23,496 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:28,382 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:28,382 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:36,480 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:36,481 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:39,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:39,374 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:44,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:44,498 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:48,592 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:48,592 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:54,639 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:54,640 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:23:56,974 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:23:56,976 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:03,689 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:03,690 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:07,154 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:07,155 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:13,839 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:13,840 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:13,839 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:13,841 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:22,405 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:22,405 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:25,530 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:25,531 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:34,097 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:34,098 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:34,097 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:34,100 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:41,327 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:41,328 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:43,810 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:43,811 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:52,710 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:52,711 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:52,711 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:52,711 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:24:59,391 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:24:59,391 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:02,837 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:02,837 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:07,075 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-22 23:25:07,076 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-22 23:25:07,091 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 23:25:07,091 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 23:25:07,102 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-22 23:25:10,790 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-22 23:25:10,998 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:10,998 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:10,997 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-22 23:25:10,998 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:10,998 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:11,096 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-22 23:25:11,192 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-22 23:25:19,191 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:19,191 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:20,227 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:20,228 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:29,004 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:29,004 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:29,004 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:29,005 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:38,341 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:38,341 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:38,341 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:38,341 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:48,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:48,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:48,193 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:48,193 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:56,837 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:56,837 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:25:56,837 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:25:56,837 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:07,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:07,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:07,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:07,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:15,924 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:15,924 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:15,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:15,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:27,249 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:27,249 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:27,250 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:27,250 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:36,507 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:36,507 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:36,507 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:36,507 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:45,617 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:45,617 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:45,617 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:45,618 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:55,517 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:55,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:26:55,517 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:26:55,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:04,215 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:04,215 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:04,215 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:04,215 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:13,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:13,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:13,202 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:13,203 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:23,496 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:23,496 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:23,496 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:23,496 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:31,612 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:31,612 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:31,612 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:31,612 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:41,006 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:41,007 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:41,006 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:41,009 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:49,387 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:49,387 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:49,388 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:49,388 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:59,134 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:59,135 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:27:59,137 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:27:59,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:08,222 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:08,223 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:08,222 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:08,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:15,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:15,833 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:18,743 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:18,744 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:18,743 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:18,743 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:18,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:18,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:26,978 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:26,978 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:26,978 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:26,979 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:35,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:35,441 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:38,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:38,441 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:38,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:38,442 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:38,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:38,442 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:47,834 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:47,835 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:47,835 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:47,835 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:54,730 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:54,730 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:54,730 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:54,730 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:54,730 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:54,731 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:28:54,730 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:28:54,731 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:07,198 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:07,198 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:07,200 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:07,200 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:13,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:13,220 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:13,220 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:13,220 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:13,223 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:13,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:13,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:13,220 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:26,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:26,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:26,129 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:26,129 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:33,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:33,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:33,251 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:33,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:33,252 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:33,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:33,251 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:33,252 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:43,853 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:43,853 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:43,853 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:43,854 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:51,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:51,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:51,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:51,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:29:51,519 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:51,519 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:51,519 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:29:51,519 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:02,703 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:02,703 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:02,703 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:02,703 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:09,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:09,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:09,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:09,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:09,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:09,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:09,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:09,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:20,662 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:20,662 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:20,662 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:20,662 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:27,528 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:27,528 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:27,528 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:27,528 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:27,528 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:27,529 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:27,528 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:27,529 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:40,502 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:40,502 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:40,503 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:40,503 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:45,402 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:45,402 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:45,402 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:45,403 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:45,402 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:45,403 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:45,402 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:45,403 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:49,064 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:49,064 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:55,589 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:55,589 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:59,980 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:59,980 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:30:59,980 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:30:59,981 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:02,784 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:07,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:07,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:15,933 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:15,933 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:17,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:17,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:17,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:17,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:20,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:20,445 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:20,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:20,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:20,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:20,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:20,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:20,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:26,488 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:26,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:35,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:35,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:35,654 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:35,654 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:35,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:35,655 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:40,981 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:40,981 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:40,982 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:40,981 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:40,981 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:40,982 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:40,981 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:40,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:40,981 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:40,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:43,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:43,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:43,817 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:43,817 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:55,720 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:55,720 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:55,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:55,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:55,720 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:55,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:58,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:58,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:58,996 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:58,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:58,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:58,996 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:58,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:58,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:31:58,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:31:58,998 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:01,876 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:01,877 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:01,876 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:01,877 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:16,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:16,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:16,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:16,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:16,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:16,477 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:19,140 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:19,140 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:19,141 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:19,140 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:19,141 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:19,140 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:19,142 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:19,140 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:19,142 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:19,140 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:21,798 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:21,798 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:21,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:21,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:34,655 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:34,655 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:34,655 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:34,655 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:34,655 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:34,656 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:37,615 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:37,615 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:37,615 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:37,616 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:37,615 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:37,615 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:37,615 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:37,621 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:37,619 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:37,619 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:40,761 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:40,761 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:40,761 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:40,762 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:54,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:54,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:54,102 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:54,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:54,102 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:54,102 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:57,534 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:57,535 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:58,982 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:58,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:32:58,982 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:32:58,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:12,701 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:12,701 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:12,701 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:12,701 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:12,701 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:12,702 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:18,900 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:18,900 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:18,900 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:18,899 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:18,901 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:30,921 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:30,921 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:30,922 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:30,921 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:30,922 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:30,922 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:36,860 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:36,860 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:36,859 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:51,255 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:51,255 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:51,255 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:51,255 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:51,255 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:51,255 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:54,937 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:54,937 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:54,938 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:54,936 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:33:54,937 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:33:54,938 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:10,069 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:10,069 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:10,069 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:10,069 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:10,069 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:10,070 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:14,978 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:14,978 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:14,977 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:14,979 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:20,978 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:20,978 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:24,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:24,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:29,590 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:29,590 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:29,590 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:29,590 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:29,590 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:29,591 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:34,411 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:34,411 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:34,410 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:34,411 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:39,933 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:39,933 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:43,713 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:43,713 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:46,768 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:46,768 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:49,710 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:49,710 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:49,710 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:49,710 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:53,030 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:53,030 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:53,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:53,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:53,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:53,030 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:53,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:53,030 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:53,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:53,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:53,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:34:53,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:53,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:34:53,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:00,837 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:00,837 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:03,369 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:03,369 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:05,014 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:05,014 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:09,577 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:09,578 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:09,577 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:09,578 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:11,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:11,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:11,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:11,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:11,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:11,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:17,762 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:17,763 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:20,745 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:20,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:23,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:23,373 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:30,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:30,167 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:35,829 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:35,830 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:40,580 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:40,580 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:43,815 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:43,815 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,920 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,920 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,920 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,921 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,920 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:48,919 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:48,922 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:53,432 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:53,432 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:35:59,915 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:35:59,915 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:02,004 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:02,004 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,815 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,818 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,815 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,817 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,817 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:08,816 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:08,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:10,786 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:10,786 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:19,170 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:19,170 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:20,551 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:20,551 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,389 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,389 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,390 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,390 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:27,388 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:27,391 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:28,943 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:28,943 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:38,925 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:38,925 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:38,925 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:38,925 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,403 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,403 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,405 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,415 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,405 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,416 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,420 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,426 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,435 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,436 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,404 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:48,436 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:48,426 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:57,773 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:57,773 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:36:57,773 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:36:57,773 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,426 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,426 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,426 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,427 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,427 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:08,427 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:08,425 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:16,564 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:16,564 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:16,564 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:16,564 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:29,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:29,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:34,650 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:34,650 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:34,651 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:34,651 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,145 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,148 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,150 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,152 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,152 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,153 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,154 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,154 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,154 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:47,146 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:47,155 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:52,401 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:52,401 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:37:52,401 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:37:52,401 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,096 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,097 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,097 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,098 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,096 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,098 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,095 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:06,099 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:06,099 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:09,571 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:09,571 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:09,571 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:09,571 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:23,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:23,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:25,775 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:25,775 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:28,952 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:28,952 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,535 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:42,538 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:42,538 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:43,047 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:43,048 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:38:46,230 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:38:46,231 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,655 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,655 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,655 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,656 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,655 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,657 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:00,654 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:00,657 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:05,502 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:05,502 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,053 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,053 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,054 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,054 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,055 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:19,052 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:19,055 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:25,846 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:25,846 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,492 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,492 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,493 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,493 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,494 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,494 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:38,495 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,491 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:38,493 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:46,305 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:46,305 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,431 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,431 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,432 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,432 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,432 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,433 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:39:56,430 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:39:56,433 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:05,362 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:05,362 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:14,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:14,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:24,199 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:24,199 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:32,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,338 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:32,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:44,206 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:44,206 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,902 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,904 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,904 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,902 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,904 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,905 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:40:51,903 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:40:51,905 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:03,319 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:03,319 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:09,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:09,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:22,697 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:22,698 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:27,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:27,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:42,050 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:42,051 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,038 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,040 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,042 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,043 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:41:46,043 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,043 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,042 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,039 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:41:46,037 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:01,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:04,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:04,423 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:18,924 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:18,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,243 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,243 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,243 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,244 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,244 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,245 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:23,245 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:23,242 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:37,558 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:37,558 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,526 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,526 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,527 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,527 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,527 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,527 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:44,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:44,528 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:42:56,851 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:42:56,852 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,195 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,195 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,196 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,196 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,196 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:04,197 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:04,194 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:15,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:15,428 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,354 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,361 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,361 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,361 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,362 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,363 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:23,363 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:23,353 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:35,900 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:35,900 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,687 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,687 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,687 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,687 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,687 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,689 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,687 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,689 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,689 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,690 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:42,690 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:42,688 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:43:55,574 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:43:55,574 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,895 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,895 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,895 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:01,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:01,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:15,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:15,224 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,203 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:19,202 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,203 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:19,203 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:33,298 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:33,299 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,187 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,187 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:38,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:38,189 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:50,137 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:50,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,082 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,082 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,082 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,082 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,083 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,083 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:44:58,081 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:44:58,083 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:09,969 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:09,970 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,380 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,380 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,380 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,382 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,383 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:16,381 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,382 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:16,382 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:28,645 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:28,645 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,964 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,964 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,964 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,965 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,965 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,965 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,966 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,966 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:36,963 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:36,966 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:46,578 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:46,578 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,468 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,468 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:45:55,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:45:55,469 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:05,807 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:05,807 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,674 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,674 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,674 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,675 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,676 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,676 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:14,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:14,676 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:24,368 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:24,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,332 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,333 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,334 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:33,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,334 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:33,339 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:41,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:41,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,032 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,032 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,032 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,031 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:46:50,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:46:50,033 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:01,051 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:01,051 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,461 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,461 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,462 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,463 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,463 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:07,463 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:07,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:21,203 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:21,203 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:25,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:25,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:40,410 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:40,410 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,931 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,931 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,932 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,932 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,932 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,932 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:43,930 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:43,933 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:47:59,327 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:47:59,327 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:03,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:03,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:19,002 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:19,002 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,892 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,892 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,892 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:21,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:21,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:38,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:38,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,624 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,626 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,626 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:40,628 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:40,626 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:48:57,154 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:48:57,154 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,234 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,234 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,234 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:00,236 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:00,233 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:16,080 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,464 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,464 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,464 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,465 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,465 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:19,465 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,465 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:19,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:34,017 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:34,017 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,897 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,897 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,897 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,898 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,898 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:38,898 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:38,898 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:51,825 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:51,825 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,622 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,623 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,624 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,624 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,624 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,622 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:49:58,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:49:58,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:09,986 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:09,986 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,058 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,058 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,058 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,059 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,059 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,059 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:17,057 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:17,060 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:29,596 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:29,596 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,186 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,186 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,189 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,189 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:35,187 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:35,189 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:47,199 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:47,199 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:50:53,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:50:53,030 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:04,489 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:04,489 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:11,062 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:11,062 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:11,061 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:11,063 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:11,063 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:12,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:12,129 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:12,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:12,130 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:12,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:12,130 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:12,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:12,130 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:24,160 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:24,160 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:28,419 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:28,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:28,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:28,419 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:28,417 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:28,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:30,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:30,272 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:30,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:30,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:30,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:30,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:30,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:30,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:41,477 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:41,477 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:46,580 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:46,582 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:46,580 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:46,582 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:46,580 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:46,582 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:46,581 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:50,026 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:50,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:50,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:50,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:50,026 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:50,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:50,026 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:50,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:51:59,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:51:59,543 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:06,781 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:06,781 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:06,781 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:06,781 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:06,783 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:06,782 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:09,308 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:09,308 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:09,309 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:09,308 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:09,308 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:09,309 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:09,308 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:09,309 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:17,720 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:17,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:26,174 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:26,174 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:26,175 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:26,175 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:26,175 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:26,174 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:26,175 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:26,174 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:26,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:26,175 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:26,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:26,175 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:26,175 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:26,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:27,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:27,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:27,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:27,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:27,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:27,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:27,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:27,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:35,679 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:35,679 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,823 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,823 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,823 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,824 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,824 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:46,822 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:46,825 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:52:54,016 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:52:54,016 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,066 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,066 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:07,067 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,067 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,067 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,066 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:07,066 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:12,720 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:12,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,173 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,173 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,173 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:26,173 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:26,173 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:31,609 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:31,609 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,895 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,895 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:43,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:43,897 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:53:51,943 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:53:51,943 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,475 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:01,475 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,475 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:01,475 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:09,884 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:09,884 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,290 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,290 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,290 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,290 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,292 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,292 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,292 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,291 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:22,293 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,293 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,293 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,292 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:22,292 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:28,380 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:28,380 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:40,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,538 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:40,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:47,121 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:47,121 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,036 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,037 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,037 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,039 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,040 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,040 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:54:58,041 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:54:58,040 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:04,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:04,365 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,030 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,030 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,030 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,030 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:16,031 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:16,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:23,463 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:23,464 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,210 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,210 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:33,211 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,210 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:33,210 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:40,673 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:40,673 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,755 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,755 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,755 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,755 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:52,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:52,755 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:55:59,870 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:55:59,870 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,599 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,599 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,599 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,599 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,600 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,599 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,600 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,599 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,600 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:10,601 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:10,598 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:19,605 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:19,605 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,118 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,118 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,119 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,119 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:30,117 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:30,119 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:38,915 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:38,915 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,509 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,509 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,509 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,510 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,510 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,510 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,511 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:49,508 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:49,511 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:56:57,733 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:56:57,733 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,220 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:08,220 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:08,218 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:16,796 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:16,796 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,884 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,884 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,885 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,885 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,886 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:25,883 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:25,886 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:36,693 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:36,693 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,423 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:44,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:44,423 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:57:54,956 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:57:54,956 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,742 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,743 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,745 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:02,741 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:02,746 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:12,532 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:12,532 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,542 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,544 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,544 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,540 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:20,545 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,544 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,543 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:20,545 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:30,725 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:30,725 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,989 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,989 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,989 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,990 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,990 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,988 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:39,990 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,990 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,990 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,990 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,990 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:39,989 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:49,205 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:49,205 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,323 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,323 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,323 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,323 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,324 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,323 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,324 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,324 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,324 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:58:58,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:58:58,325 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:08,598 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:08,598 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,081 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,081 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,082 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,083 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:16,080 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:16,083 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:27,085 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:27,085 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,635 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,635 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,635 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,635 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,635 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,636 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:33,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:33,636 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:46,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:46,005 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,017 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,017 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,019 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,019 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,021 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,022 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,024 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,018 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-22 23:59:52,025 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,022 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,021 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-22 23:59:52,019 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:04,035 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:04,035 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,519 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,519 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,519 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,520 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:10,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:10,521 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:20,050 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:20,050 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,226 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,226 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,227 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,227 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:28,227 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:28,224 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:41,502 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:41,502 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,369 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:45,367 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:45,369 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:00:58,313 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:00:58,314 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,984 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,984 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,984 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,985 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,985 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:03,983 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:03,986 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:16,170 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:16,170 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,218 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,218 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,220 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,221 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,221 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,219 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:22,222 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:22,222 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:35,445 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:35,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,609 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:43,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:43,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:01:55,002 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:01:55,002 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,925 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:03,922 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:03,925 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:13,238 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:13,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,181 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,181 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,181 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,181 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,182 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,182 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,182 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,182 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:24,180 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:24,182 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:30,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:30,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,068 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,068 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,068 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,069 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,069 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,069 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:43,067 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:43,069 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:02:48,912 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:02:48,912 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,828 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,829 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:01,830 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,828 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,863 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-19] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse                    Mail:  rj@ri.cadre.com\nCadre Technologie...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:01,863 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-19] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse                    Mail:  rj@ri.cadre.com\nCadre Technologie...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:06,781 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:06,781 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,559 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,559 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,559 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,559 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:22,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:22,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:26,629 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:26,629 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,682 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,682 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,682 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,683 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:40,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:40,683 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:46,041 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:46,042 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,329 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:03:59,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:03:59,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:02,377 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:02,377 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,270 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,269 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:18,272 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:18,272 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:21,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:21,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,805 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,806 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,807 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:37,808 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,807 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,805 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:37,809 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:38,316 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:38,316 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,767 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,767 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,768 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,770 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,772 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:04:56,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:04:56,772 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,765 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,767 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,768 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,768 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:16,764 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:16,769 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,725 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,725 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,725 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,725 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,726 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,727 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,728 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,728 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,729 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,730 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,724 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:35,731 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,726 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,731 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-19] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "event": "documents", "eventTime": "2015-04-23T06:22:22.566+0000", "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEsche...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:35,738 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-20] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "event": "documents", "eventTime": "2015-04-23T06:22:22.566+0000", "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEsche...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,366 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:05:56,370 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,369 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,369 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:05:56,369 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,446 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,447 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:14,448 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,448 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,448 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:14,447 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:24,399 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:24,399 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,363 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,363 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,364 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,363 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,363 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,363 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,365 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,364 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,364 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,364 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,367 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,364 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,364 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,364 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:32,365 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:32,370 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:42,202 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:42,202 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,061 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,061 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,062 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,063 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:51,059 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:51,064 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:06:59,166 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:06:59,167 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,544 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,544 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,545 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,548 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,549 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,544 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,544 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,551 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,544 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:10,543 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:10,553 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:17,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:17,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,455 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,455 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,457 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,457 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:30,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:30,458 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:39,206 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:39,206 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,006 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,013 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,013 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:50,005 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:50,014 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:07:57,142 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:07:57,143 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,171 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,174 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,173 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,173 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:10,178 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:10,174 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:16,435 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:16,436 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,961 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,961 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,966 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,961 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,961 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,967 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,961 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,961 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,968 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,961 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:28,968 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,967 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,966 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:28,969 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:33,967 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:33,967 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,178 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,178 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,178 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,179 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,178 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,180 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,179 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,179 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,179 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,184 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,179 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,185 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,179 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,186 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,178 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:47,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:47,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:08:54,115 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:08:54,116 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:05,217 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 00:09:07,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,562 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,562 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,562 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,563 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,562 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,562 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,566 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:07,568 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:07,564 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:13,286 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:13,286 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,016 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,017 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,016 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,017 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,016 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,018 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:25,019 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,015 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,019 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:25,018 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:33,175 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:33,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:36,506 WARN  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-5] - Bind to /0.0.0.0:7070 failed
2015-04-23 00:09:36,520 ERROR io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-5] - Command failed.
2015-04-23 00:09:37,266 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:37,266 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,957 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,957 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,957 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,957 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,960 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,960 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,961 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,958 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:43,962 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:43,959 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:53,036 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:53,036 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:09:57,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:09:57,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,499 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,499 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,498 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,499 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,498 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,500 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,501 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:04,497 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:04,501 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:10,651 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:10,651 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:18,338 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:18,338 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,233 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,233 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,236 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:24,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:24,237 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:30,568 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:30,568 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:37,349 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:37,349 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,456 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,456 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,458 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:44,459 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,459 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,458 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,458 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,458 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:44,459 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:49,592 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:49,592 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:10:55,286 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:10:55,286 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,524 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:02,523 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:02,526 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:08,495 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:08,495 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:15,270 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:15,270 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,327 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,328 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:22,329 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,328 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,327 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:22,326 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:27,386 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:27,386 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:34,020 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:34,020 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,002 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,002 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,003 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,003 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,003 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:42,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:42,004 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:46,148 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:46,148 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:11:54,560 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:11:54,560 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-22] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-22] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,587 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,587 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,588 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-28] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,586 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:01,588 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-28] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,588 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,589 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-22] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "entityId": 1, "event": "documents", "eventTime": "2015-04-23T06:27:55.676+0000", "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nTh...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:01,590 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-28] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "entityId": 1, "event": "documents", "eventTime": "2015-04-23T06:27:55.676+0000", "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nTh...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:03,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:03,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:12,997 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:12,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:19,556 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:19,556 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:19,556 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:23,205 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:23,205 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:32,509 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:32,527 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:38,837 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:38,836 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:38,837 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:44,105 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:44,106 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:52,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:52,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:57,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:57,626 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:57,626 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:57,626 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:57,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:57,626 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:57,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:57,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:57,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:57,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:57,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:57,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:12:57,627 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:12:57,626 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:02,576 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:02,576 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:09,976 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:09,976 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:16,193 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:16,193 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:16,194 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:16,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:16,194 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:21,017 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:21,017 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:29,247 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:29,247 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:36,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:36,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:36,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:36,162 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:36,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:38,609 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:38,609 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:48,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:48,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:54,512 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:54,513 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:54,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:54,513 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:54,513 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:13:56,344 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:13:56,344 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:06,588 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:06,588 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,111 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:14,111 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,111 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,111 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,111 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:14,111 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:24,785 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:24,785 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:32,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,604 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-25] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"event": "documents", "entityType": "source", "eventTime": "2015-04-23T06:30:31.652+0000", "properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThan...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,605 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-25] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"event": "documents", "entityType": "source", "eventTime": "2015-04-23T06:30:31.652+0000", "properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThan...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,605 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-25] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"eventTime": "2015-04-23T06:31:20.482+0000", "entityType": "source", "properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfusca...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:32,608 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-21] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 776, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"eventTime": "2015-04-23T06:31:20.482+0000", "entityType": "source", "properties": {"label": 11, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfusca...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:43,533 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:43,533 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:49,858 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:49,858 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:49,858 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:49,858 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:49,858 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:49,859 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:14:49,858 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:14:49,859 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:01,573 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:01,573 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:07,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:19,766 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:19,766 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:23,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:23,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:23,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:23,831 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:23,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:23,831 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:23,831 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:23,832 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:38,498 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:38,498 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:43,833 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:43,833 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:43,833 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:43,833 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:43,833 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:43,833 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:43,834 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:43,834 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:15:57,525 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:15:57,525 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:01,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:01,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:01,456 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:01,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:01,457 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:01,456 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:01,457 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:01,456 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:15,580 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:15,580 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:20,273 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:20,273 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:20,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:20,273 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:20,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:20,273 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:20,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:20,274 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:36,160 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:36,160 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:38,236 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:38,236 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:38,236 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:38,236 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:38,237 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:38,236 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:38,236 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:38,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:54,717 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:54,718 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:57,024 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:57,024 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:57,024 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:57,024 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:57,024 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:16:57,025 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:57,025 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:57,024 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:16:57,030 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-24] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 778, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"event": "documents", "eventTime": "2015-04-23T06:34:02.100+0000", "entityId": 1, "entityType": "source", "properties": {"label": 11.0, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:12,142 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:12,142 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:15,026 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:15,026 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:15,026 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:15,026 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:15,026 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:15,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:30,516 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:30,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:33,049 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:33,049 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:33,049 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:33,049 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:33,049 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:33,049 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:33,051 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-27] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 778, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"event": "documents", "eventTime": "2015-04-23T06:34:02.100+0000", "entityId": 1, "entityType": "source", "properties": {"label": 11.0, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:49,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:49,455 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:51,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:51,634 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:17:51,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:17:51,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:08,911 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:08,911 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:12,085 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:12,085 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:12,085 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:12,085 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:27,918 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:27,918 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:30,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:30,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:30,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:30,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:46,509 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:46,509 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:49,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:49,804 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:18:49,804 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:18:49,804 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:04,772 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:04,772 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:07,506 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:07,506 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:07,506 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:07,506 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:22,429 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:22,429 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:26,051 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:26,051 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:26,051 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:26,051 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:39,997 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:39,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:43,110 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:43,110 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:45,656 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:45,656 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:19:58,726 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:19:58,726 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:00,607 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:00,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:03,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:03,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:20,188 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:20,188 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:20,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:20,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:22,307 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:22,307 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:38,289 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:38,289 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:38,289 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:38,289 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:40,932 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:40,932 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:56,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:56,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:56,606 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:56,606 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:20:59,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:20:59,606 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:15,563 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:15,563 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:15,563 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:15,563 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:18,614 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:18,614 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:35,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:35,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:35,606 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:35,606 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:38,650 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:38,650 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:55,710 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:55,710 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:55,710 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:55,710 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:21:58,063 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:21:58,064 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:14,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:14,518 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:14,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:14,518 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:15,258 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:15,258 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:33,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:33,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:33,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:33,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:33,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:33,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:51,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:51,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:51,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:51,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:22:51,561 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:22:51,561 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:12,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:12,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:12,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:12,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:12,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:12,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:31,124 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:31,124 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:31,124 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:31,124 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:31,124 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:31,124 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:48,547 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:48,547 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:48,547 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:48,547 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:23:48,547 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:23:48,548 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:06,934 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:06,934 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:06,934 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:06,934 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:06,935 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:06,935 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:24,250 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:24,250 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:24,250 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:24,250 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:24,250 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:24,250 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:43,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:43,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:43,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:43,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:24:43,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:24:43,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:01,156 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:01,156 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:01,156 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:01,156 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:01,157 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:01,156 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:18,156 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:18,156 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:18,157 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:18,157 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:18,157 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:18,157 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:37,216 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:37,216 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:37,216 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:37,216 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:37,216 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:37,217 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:54,109 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:54,109 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:54,110 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:54,110 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:25:54,109 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:25:54,111 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:12,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:12,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:12,960 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:12,960 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:12,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:12,961 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:31,181 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:31,181 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:31,181 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:31,181 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:31,182 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:31,181 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:45,399 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 00:26:47,899 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-23 00:26:47,900 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-23 00:26:47,900 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-23 00:26:49,738 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:49,738 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:49,738 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:49,738 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:26:49,738 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:26:49,738 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:08,704 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_0 doesn't exist yet. Creating now...
2015-04-23 00:27:09,198 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_0...
2015-04-23 00:27:11,385 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:11,385 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:11,385 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:11,385 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:11,385 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:11,385 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:29,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:29,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:29,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:29,136 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:29,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:29,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:47,494 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:47,494 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:47,494 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:27:47,494 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:47,494 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:47,494 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:27:53,559 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-23 00:27:53,704 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-23 00:27:53,705 INFO  io.prediction.tools.console.App$ [main] - Finished listing 1 app(s).
2015-04-23 00:28:04,870 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:04,870 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:04,870 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:04,870 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:04,870 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:04,871 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:23,234 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:23,234 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:23,234 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:23,234 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:23,234 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:23,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:40,012 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:40,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:41,967 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:41,967 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:41,967 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:41,967 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:41,967 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:41,967 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:28:58,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:28:58,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:01,270 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:01,270 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:01,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:01,271 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:01,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:01,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:17,644 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:17,645 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:20,519 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:20,519 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:20,520 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:20,520 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:20,519 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:20,520 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:36,718 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:36,719 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:36,718 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:36,719 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:40,413 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:40,413 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:40,413 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:40,413 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:40,413 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:40,414 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:56,189 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:56,189 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:56,189 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:56,190 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:58,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:58,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:58,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:58,461 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:29:58,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:29:58,461 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:15,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:33,239 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:33,239 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:33,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:51,650 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:30:51,650 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:30:51,649 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:11,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:11,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:11,971 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:11,971 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:11,970 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:11,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:11,971 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:11,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:11,971 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:11,971 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:29,500 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:47,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:47,566 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:31:49,267 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:31:49,268 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:05,662 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:05,662 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:05,661 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:09,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:09,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:22,807 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:22,807 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:22,806 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:26,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:26,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:41,877 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:41,877 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:41,878 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:41,878 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:41,878 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:41,877 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:41,878 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:41,877 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:41,879 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:41,878 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:32:44,453 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:32:44,453 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:00,044 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:00,044 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:00,045 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:00,045 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:00,045 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:00,044 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:00,044 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:00,045 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:00,045 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:00,045 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:02,684 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:02,684 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:18,718 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:18,717 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:21,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:21,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:39,736 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:39,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:41,811 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:41,811 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:56,687 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:56,686 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:33:59,953 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:33:59,954 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:15,886 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:15,887 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:15,887 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:17,571 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:17,571 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:34,397 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:34,397 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:34,396 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:36,480 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:36,480 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:51,873 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:34:54,320 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:34:54,320 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:09,856 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:09,856 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:09,857 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:09,857 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:09,857 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:09,856 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:09,857 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:09,856 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:09,857 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:09,857 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:15,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:15,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:29,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:29,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:29,102 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:29,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:29,103 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:29,102 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:29,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:29,103 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:29,102 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:29,103 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:32,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:32,649 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:47,468 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:47,468 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:47,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:35:52,140 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:35:52,140 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:07,259 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:07,259 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:07,260 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:07,260 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:07,260 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:07,260 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:07,259 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:07,260 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:07,259 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:07,261 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:11,163 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:11,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:27,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:27,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:29,884 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:29,884 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:46,345 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:46,344 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:46,345 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:36:48,758 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:36:48,758 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:04,184 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:04,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:08,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:08,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:22,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:22,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:22,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:22,441 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:22,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:22,442 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:22,441 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:22,442 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:22,442 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:22,441 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:26,695 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:26,695 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:43,228 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:43,229 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:45,489 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:45,489 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:37:46,364 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:37:46,365 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:01,235 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:05,222 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:05,222 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:05,222 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:05,222 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:20,970 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:23,898 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:23,898 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:23,898 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:23,898 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:40,294 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:40,294 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:40,294 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:40,294 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:40,294 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:40,294 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:40,294 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:40,295 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:40,295 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:40,295 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:44,101 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:44,101 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:44,101 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:44,102 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:38:59,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:02,801 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:02,801 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:02,801 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:02,801 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:17,638 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:17,638 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:17,637 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:19,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:19,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:19,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:35,556 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:35,555 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:38,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:38,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:38,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:38,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:55,440 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:55,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:55,441 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:57,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:57,831 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:39:57,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:39:57,832 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:11,440 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:11,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:15,619 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:15,619 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:15,619 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:15,619 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:30,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:30,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:30,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:30,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:30,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:30,011 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:30,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:30,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:30,011 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:30,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:32,158 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:32,159 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:35,785 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:35,785 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:49,665 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:49,665 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:49,666 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:49,666 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:49,666 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:49,665 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:49,666 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:49,665 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:49,666 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:49,666 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:49,666 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:49,667 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:40:53,496 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:40:53,496 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:09,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:09,826 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:12,896 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:12,896 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:29,429 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:29,429 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:29,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:29,430 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:31,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:31,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:46,800 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:46,799 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:41:50,153 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:41:50,153 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:07,166 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:07,166 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:07,165 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:07,166 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:26,461 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:26,461 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:26,462 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:26,460 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:26,463 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:39,954 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:39,954 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:45,298 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:45,298 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:45,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:45,298 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:42:58,103 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:42:58,103 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:02,157 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:02,157 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:02,157 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:02,159 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:02,158 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:02,159 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:18,359 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:18,359 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:24,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:24,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:24,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:24,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:24,708 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:36,900 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:36,900 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:43,160 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:43,161 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:43,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:43,159 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:43,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:43,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:43,164 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:43:54,405 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:43:54,405 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:03,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:03,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:03,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:03,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:03,607 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:03,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:13,792 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:13,792 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:23,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:23,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:23,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:23,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:32,656 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:32,656 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:40,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:40,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:40,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:40,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:40,907 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:40,906 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:40,907 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:51,192 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:51,192 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:58,612 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:44:58,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:44:58,613 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:09,660 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:09,660 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:17,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:17,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:17,272 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:17,273 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:29,096 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:29,096 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:34,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:34,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:34,647 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:34,646 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:34,648 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:47,042 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:47,043 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:45:53,297 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:45:53,298 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:05,310 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:05,310 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:13,115 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:13,115 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:13,114 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:13,115 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:24,078 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:24,078 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-14] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:32,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-14] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:32,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:32,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:32,170 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-28] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 803, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "event": "documents", "properties": {"label": 11.0, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:41,326 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:41,326 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:49,373 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:49,374 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:46:59,385 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:46:59,385 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:08,868 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:08,867 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:16,978 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:16,979 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:27,963 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:27,962 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:27,963 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:27,963 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:34,563 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:34,563 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:45,135 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:45,135 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:45,135 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:45,134 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:47:53,651 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:47:53,652 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:03,969 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:03,968 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:10,855 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:10,855 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:20,538 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:20,538 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:20,537 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:20,538 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:29,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:29,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:40,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:40,169 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:40,168 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:40,170 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:47,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:47,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:58,512 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:58,512 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:58,512 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:48:58,511 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:48:58,513 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:06,681 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:06,681 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:16,137 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:16,137 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:16,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:16,137 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:16,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:16,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:17,375 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:17,375 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:17,375 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:17,376 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:17,375 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:17,376 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:24,488 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:24,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:32,002 ERROR io.prediction.data.storage.elasticsearch.ESAccessKeys [EventServerSystem-akka.actor.default-dispatcher-28] - [predictionio_metadata][0] null
2015-04-23 00:49:34,711 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:34,711 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:34,711 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:34,711 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:34,711 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:34,711 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:36,445 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:36,445 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:36,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:36,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:36,445 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:36,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:36,446 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-22] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 803, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityId": 1, "event": "documents", "entityType": "source", "properties": {"category": "sci.crypt", "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obf...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:44,501 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:44,501 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:53,281 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:49:53,281 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:49:53,280 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:03,368 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:03,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:11,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:23,528 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:23,528 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:31,905 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:41,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:41,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:53,087 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:53,087 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:53,086 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:50:59,325 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:50:59,325 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:08,988 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 00:51:11,874 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:11,874 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:11,875 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:11,874 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:11,875 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:11,874 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:11,874 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:11,875 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:11,874 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:11,875 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:15,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-23 00:51:15,678 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x7cbee484, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.api.EventServer$.createEventServer(EventAPI.scala:453)
	at io.prediction.tools.console.Console$.eventserver(Console.scala:881)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:685)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-23 00:51:15,681 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.api.EventServer$.createEventServer(EventAPI.scala:453)
	at io.prediction.tools.console.Console$.eventserver(Console.scala:881)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:685)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-23 00:51:16,092 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:16,092 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:16,882 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-23 00:51:16,883 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-23 00:51:16,884 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:29,692 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:29,693 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:29,691 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:35,466 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:35,466 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:47,675 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:47,676 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:56,404 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:51:56,404 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:51:58,586 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 00:52:03,109 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 00:52:05,663 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:05,663 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:05,663 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:05,663 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:05,663 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:05,672 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:05,663 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:05,672 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:05,663 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:05,672 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:08,623 WARN  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-6] - Bind to /0.0.0.0:7070 failed
2015-04-23 00:52:08,625 ERROR io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-6] - Command failed.
2015-04-23 00:52:09,219 WARN  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bind to /0.0.0.0:7070 failed
2015-04-23 00:52:09,222 ERROR io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Command failed.
2015-04-23 00:52:13,927 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:13,927 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:25,390 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:25,389 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:25,390 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:25,392 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-14] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 803, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"event": "documents", "entityType": "source", "properties": {"label": 11.0, "category": "sci.crypt", "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obf...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:31,515 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:31,516 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:43,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:52:48,816 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:52:48,816 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:02,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:02,183 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:02,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:02,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:02,184 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:02,183 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:02,185 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:02,184 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:05,913 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:05,913 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:22,911 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:22,911 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:22,911 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:22,911 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:22,911 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:22,911 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:22,912 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:22,912 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:24,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:24,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:41,734 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:41,734 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:41,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:41,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:41,734 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:41,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:41,734 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:41,735 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:53:42,784 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:53:42,784 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:00,419 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:00,419 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:00,419 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:00,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:00,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:00,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:00,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:00,419 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:00,423 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:00,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:20,022 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:20,022 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:20,021 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:39,060 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:57,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:57,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:57,001 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:57,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:57,001 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:57,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:57,001 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:57,000 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:54:57,001 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:54:57,000 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:14,438 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:20,349 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:20,350 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:34,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:34,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:34,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:39,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:39,960 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:52,828 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:52,828 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:52,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:55:57,191 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:55:57,191 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:12,611 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:12,612 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:17,754 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:17,754 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:29,391 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:29,391 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:29,391 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:29,391 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:29,391 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:29,392 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:29,391 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:29,393 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:29,392 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:29,391 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:38,177 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:38,177 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:47,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:47,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:56:56,021 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:56:56,021 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:06,369 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:06,370 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:06,369 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:06,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:06,371 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:06,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:06,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:06,372 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:06,372 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:06,371 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:12,827 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:12,827 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:25,492 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:25,492 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:25,491 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:30,145 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:30,145 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:42,371 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:42,371 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:42,370 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:48,500 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:48,501 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:59,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:59,438 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:59,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:59,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:59,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:59,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:59,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:59,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:57:59,438 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:57:59,439 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:08,259 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:08,259 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:19,705 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:27,020 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_2 doesn't exist yet. Creating now...
2015-04-23 00:58:27,310 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:27,310 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:27,330 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 2.
2015-04-23 00:58:27,353 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-04-23 00:58:27,353 INFO  io.prediction.tools.console.App$ [main] -       Name: test
2015-04-23 00:58:27,354 INFO  io.prediction.tools.console.App$ [main] -         ID: 2
2015-04-23 00:58:27,354 INFO  io.prediction.tools.console.App$ [main] - Access Key: 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:38,205 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:38,205 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:38,204 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:45,547 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:45,547 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:58:58,245 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:03,779 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:03,779 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:18,206 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:18,206 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:18,205 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:21,978 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:21,978 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:25,131 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:25,131 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:36,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:36,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:36,027 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:41,131 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:41,131 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:43,964 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:43,964 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:52,949 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 00:59:58,649 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 00:59:58,649 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:01,759 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:01,759 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:10,780 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:18,715 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:18,716 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:21,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:21,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:28,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:28,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:28,323 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:28,322 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:28,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:28,323 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:28,322 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:28,323 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:28,323 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:28,323 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:36,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:36,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:40,567 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:40,567 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:46,450 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:46,449 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:46,450 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:00:56,976 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:00:56,976 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:00,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:00,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:05,527 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:05,526 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:14,637 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:14,637 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:18,817 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:18,817 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:25,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:25,565 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:25,564 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:32,452 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:32,452 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:37,952 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:37,952 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:39,443 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:39,443 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:40,966 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:40,966 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:45,393 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:45,393 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:45,392 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:50,749 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:50,749 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:57,184 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:57,184 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:57,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:57,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:01:57,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:01:57,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:03,670 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:03,670 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:03,669 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:09,601 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:09,601 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:14,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:14,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:14,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:14,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:14,823 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:14,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:24,074 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:24,073 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:27,614 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:27,614 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:32,141 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:32,141 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:32,142 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:32,142 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:32,141 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:32,142 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:42,517 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:45,143 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:45,143 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:50,889 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:50,889 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:50,889 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:50,889 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:02:50,890 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:02:50,889 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:01,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:04,908 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:04,908 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:11,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:11,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:11,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:11,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:11,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:11,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:21,488 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:21,489 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:23,315 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:23,315 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:28,281 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:28,281 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:28,282 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:28,282 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:28,282 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:28,282 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:39,740 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:39,740 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:39,739 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:41,108 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:41,109 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:48,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:48,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:48,242 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:48,242 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:48,242 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:48,243 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:58,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:58,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:03:58,632 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:03:58,634 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:06,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:06,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:06,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:06,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:06,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:06,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:16,870 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:16,869 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:16,870 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:16,870 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:24,558 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:24,558 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:24,558 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:24,558 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:24,558 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:24,559 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:36,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:36,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:36,487 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:36,488 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:46,201 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:46,201 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:46,201 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:46,202 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:46,201 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:46,202 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:56,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:56,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:04:56,237 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:04:56,239 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:05,493 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:05,493 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:05,493 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:05,493 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:05,493 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:05,494 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:13,678 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:13,678 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:13,678 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:13,677 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:13,679 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:25,603 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:25,603 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:25,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:25,603 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:25,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:25,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:34,930 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:34,930 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:34,929 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:34,930 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:45,122 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:45,122 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:45,122 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:45,122 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:45,122 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:45,123 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:05:54,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:05:54,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:04,270 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:04,270 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:04,270 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:04,270 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:04,270 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:04,271 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:12,298 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:12,298 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:12,299 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:12,299 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:12,299 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:12,299 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:12,298 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:12,300 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:12,298 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:12,300 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:12,299 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:12,299 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:22,261 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:22,261 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:22,262 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:22,261 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:22,261 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:22,262 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:29,385 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:29,392 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:29,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:29,393 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:41,459 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:41,459 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:41,459 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:41,459 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:41,459 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:41,459 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:49,902 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:49,902 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:49,901 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:49,902 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:58,796 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:58,796 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:58,797 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:58,796 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:06:58,796 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:06:58,797 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:07,099 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:07,099 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:07,098 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:07,099 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:17,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:17,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:17,346 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:17,346 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:17,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:17,347 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:24,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:24,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:24,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:24,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:24,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:24,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:24,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:24,420 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:24,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:24,421 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:24,421 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:24,422 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:34,276 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:34,276 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:34,277 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:34,276 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:34,276 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:34,277 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:44,582 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:44,582 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:44,582 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:44,583 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:44,582 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:44,582 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:44,583 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:44,582 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:44,583 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:44,583 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:44,582 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:44,584 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:52,161 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:52,161 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:52,161 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:52,161 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:07:52,695 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:07:52,695 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:05,347 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:05,347 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:05,346 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:05,347 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:09,524 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:09,524 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:09,524 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:09,524 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:13,594 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:13,594 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:24,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:24,719 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:24,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:24,720 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:31,040 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:31,040 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:31,040 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:31,040 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:32,971 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:32,971 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:43,226 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:43,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:48,495 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:48,495 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:48,495 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:48,495 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:08:51,606 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:08:51,606 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:03,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:03,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:03,209 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:03,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:08,400 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:08,400 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:08,400 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:08,400 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:11,608 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:11,608 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:23,590 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:23,589 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:23,590 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:27,076 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:27,076 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:27,076 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:27,076 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:30,172 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:30,172 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:43,477 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:43,477 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:43,477 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:43,476 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:46,419 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:46,419 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:46,419 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:46,419 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:09:49,536 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:09:49,536 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:01,918 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:01,918 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:01,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:01,919 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:05,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:05,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:05,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:05,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:08,065 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:08,065 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:22,811 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:22,811 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:22,811 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:22,810 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:24,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:24,425 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:24,425 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:24,425 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:26,900 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:26,900 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:41,846 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:41,845 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:41,846 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:42,607 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:42,607 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:42,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:42,607 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:45,337 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:45,337 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:58,832 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:58,833 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:10:58,831 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:10:58,833 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:01,345 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:01,345 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:01,345 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:01,345 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:02,771 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:02,772 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:16,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:16,444 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:16,445 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:18,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:18,478 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:18,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:18,478 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:21,040 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:21,040 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:33,987 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:33,987 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:33,986 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:33,987 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:36,840 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:36,840 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:36,840 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:36,840 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:38,036 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:38,037 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:52,863 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:52,862 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:52,863 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:56,772 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:56,772 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:56,772 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:56,772 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:11:56,773 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:11:56,772 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-23] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-23] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-21] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:10,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-21] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,224 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:10,227 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-23] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 803, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"eventTime": "2015-04-23T07:29:19.751+0000", "properties": {"category": "sci.crypt", "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob ...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,227 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-23] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 803, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "event": "documents", "entityId": 1, "eventTime": "2015-04-23T07:28:20.318+0000", "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nTh...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:10,227 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:13,865 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:13,865 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:13,865 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:13,865 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:13,865 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:13,866 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:28,454 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:33,914 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:33,914 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:33,914 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:33,914 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:33,914 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:33,915 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:47,605 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:47,605 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:47,605 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:47,605 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:47,605 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:47,605 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:47,606 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:47,605 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:50,679 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:50,679 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:50,679 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:50,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:12:50,679 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:12:50,680 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:06,609 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:06,609 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:06,609 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:06,609 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:06,609 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:06,609 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:06,609 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:06,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:10,053 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:10,053 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:10,053 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:10,054 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:10,053 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:10,054 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:26,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:26,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:26,251 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:26,251 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:26,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:26,252 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:26,251 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:26,252 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:27,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:27,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:27,960 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:27,960 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:27,961 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:27,960 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:42,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:42,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:42,621 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:42,621 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:42,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:42,622 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:42,621 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:42,622 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:49,315 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:49,315 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:49,315 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:49,315 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:13:49,315 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:13:49,315 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:01,712 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:08,099 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:08,099 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:08,099 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:08,099 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:08,100 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:08,099 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:21,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:21,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:21,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:21,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:21,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:21,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:21,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:21,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:26,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:26,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:26,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:26,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:26,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:26,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:39,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:39,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:39,706 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:39,706 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:39,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:39,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:39,706 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-27] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:39,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-27] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:39,709 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-23] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 798, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityId": 1, "eventTime": "2015-04-23T07:31:31.684+0000", "event": "text", "entityType": "source", "properties": {"label": 11.0, "category": "sci.crypt", "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  I...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:44,012 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:44,012 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:44,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:44,012 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:44,012 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:44,013 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:57,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:57,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:57,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:57,625 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:14:57,625 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:14:57,626 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:03,819 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:03,819 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:03,819 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:03,819 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:03,819 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:03,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:16,016 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:16,016 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:16,016 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:16,016 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:16,016 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:16,016 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:24,309 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:24,309 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:24,309 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:24,309 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:24,309 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:24,309 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:34,342 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:34,342 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:34,342 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:34,342 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:34,342 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:34,342 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:43,752 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:43,752 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:43,752 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:43,752 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:43,752 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:43,752 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:51,956 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:51,956 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:51,956 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:51,956 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:15:51,956 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:15:51,956 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:02,343 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:02,343 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:02,343 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:02,343 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:02,343 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:02,344 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:11,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:11,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:11,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:11,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:11,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:11,523 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:21,712 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:21,712 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:21,712 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:21,712 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:21,712 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:21,712 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:29,940 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:29,940 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:29,940 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:29,940 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:29,940 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:29,941 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:40,447 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:40,447 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:40,447 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:40,447 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:40,447 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:40,448 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:48,749 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:48,749 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:48,749 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:48,749 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:48,749 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:48,750 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:58,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:58,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:58,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:58,335 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:16:58,335 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:16:58,336 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:06,636 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:06,636 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:06,636 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:06,636 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:06,636 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:06,636 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:17,290 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:17,290 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:17,290 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:17,290 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:17,290 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:17,291 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:25,707 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:25,707 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:25,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:25,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:25,707 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:25,707 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:34,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:34,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:34,009 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:34,009 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:34,009 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:34,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:44,092 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:44,092 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:44,092 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:44,092 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:44,093 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:44,092 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:51,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:51,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:51,534 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:51,534 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:17:51,534 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:17:51,535 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:02,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:02,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:02,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:02,225 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:02,225 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:02,226 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:11,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:11,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:11,457 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:11,457 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:11,457 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:11,457 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:21,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:21,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:21,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:21,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:21,384 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:21,384 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:31,207 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:31,207 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:31,207 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:31,207 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:31,207 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:31,208 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:41,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:41,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:41,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:41,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:41,467 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:41,467 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:50,769 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:50,769 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:50,770 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:50,770 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:18:50,769 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:18:50,770 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:00,414 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:00,414 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:00,414 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:00,414 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:00,414 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:00,415 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:09,550 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:09,550 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:09,550 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:09,550 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:09,550 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:09,551 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:18,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:18,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:18,689 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:18,689 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:18,688 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:18,689 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:29,395 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:29,395 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:29,395 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:29,395 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:29,395 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:29,395 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:38,196 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:38,196 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:38,196 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:38,196 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:38,196 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:38,197 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:49,974 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:49,974 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:49,974 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:49,974 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:49,974 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:49,975 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:56,803 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:56,803 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:56,803 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:56,803 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:19:56,803 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:19:56,803 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:11,163 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:11,163 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:11,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:11,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:11,163 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:11,163 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:14,928 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:14,928 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:14,928 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:14,928 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:14,928 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:14,928 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:30,288 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:30,288 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:30,288 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:30,288 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:30,288 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:30,289 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:35,025 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:35,025 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:35,025 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:35,025 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:35,025 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:35,026 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:48,858 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:48,858 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:48,858 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:48,858 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:48,858 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:48,858 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:54,718 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-26] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:54,718 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:54,718 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:54,718 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-26] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:54,718 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:20:54,719 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:20:54,720 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-23] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 800, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "source", "eventTime": "2015-04-23T07:37:29.007+0000", "event": "text", "entityId": "1", "properties": {"label": 11.0, "category": "sci.crypt", "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have. ...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:07,729 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:07,729 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:07,729 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:07,729 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:07,729 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:07,729 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:12,073 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:12,073 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:12,073 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:12,073 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:24,262 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:24,262 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:24,262 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:24,262 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:24,262 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:24,263 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:30,188 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:30,188 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:30,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:30,188 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:42,546 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:42,546 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:42,546 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:42,546 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:42,546 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:42,547 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:48,718 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:48,718 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:21:48,718 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:21:48,718 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:02,698 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:02,698 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:02,698 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:02,698 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:02,698 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:02,699 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:07,411 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:07,411 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:07,411 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:07,411 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:19,778 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:19,778 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:19,778 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:19,778 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:19,778 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:19,779 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:26,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:26,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:26,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:26,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:39,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:39,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:39,417 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:39,417 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:39,417 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:39,418 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:42,965 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:42,965 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:22:42,966 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:22:42,965 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:00,427 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:00,427 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:00,428 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:00,428 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:00,428 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:00,427 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:00,429 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:00,427 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:00,429 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:00,428 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:17,822 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:17,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:36,138 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:55,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:55,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:55,366 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:55,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:55,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:55,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:55,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:55,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:23:55,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:23:55,366 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:14,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:14,136 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:14,135 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:32,521 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:32,521 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:32,522 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:32,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:32,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:32,521 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:32,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:32,521 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:32,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:32,522 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:24:50,478 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:10,177 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:10,177 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:10,176 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:27,836 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:27,835 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:46,995 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-24] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:46,995 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:46,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:46,996 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-24] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:46,995 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:46,995 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:25:46,996 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:46,996 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:46,996 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:46,996 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:25:46,997 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-24] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 798, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "user", "event": "$set", "properties": {"label": 11.0, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse       ...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:06,819 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:06,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:06,819 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:06,820 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:06,819 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:06,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:06,819 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:06,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:24,257 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:41,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:41,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:41,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:41,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:41,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:41,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:26:41,996 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:26:41,997 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:00,236 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:00,236 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:00,237 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:00,237 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:00,237 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:00,236 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:00,236 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:00,238 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:18,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:18,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:18,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:18,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:18,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:18,330 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:18,330 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:18,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:37,841 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:37,841 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:37,841 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:37,841 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:37,841 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:37,842 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:37,841 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:37,842 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:55,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:55,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:55,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:55,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:55,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:55,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:27:55,746 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:27:55,747 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:15,882 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:15,882 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:15,882 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:15,882 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:15,882 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:15,882 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:15,882 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:15,883 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:34,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:34,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:34,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:34,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:34,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:34,602 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:34,603 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:34,602 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:53,585 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:53,585 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:53,585 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:53,585 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:53,585 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:53,585 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:28:53,586 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:28:53,585 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:12,342 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:12,342 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:12,343 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:12,342 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:12,343 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:12,342 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:12,343 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:12,343 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:31,408 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:31,408 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:31,408 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:31,408 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:31,408 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:31,409 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:31,408 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:31,409 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:29:50,569 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:10,407 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:10,407 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:10,408 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:10,408 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:10,407 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:10,408 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:10,407 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:10,408 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:28,143 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:28,143 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:28,143 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:28,143 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:28,144 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:28,143 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:28,144 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:28,143 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:46,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:46,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:46,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:46,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:46,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:46,923 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:30:46,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:30:46,923 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:04,155 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:04,156 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:04,156 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:04,156 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:04,156 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:04,156 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:04,155 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:04,156 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:23,760 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:39,991 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:59,436 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:59,436 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:59,436 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:59,436 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:59,436 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:59,437 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:31:59,436 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:31:59,437 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:18,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:18,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:18,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:18,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:18,332 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:18,331 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:18,332 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:18,331 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:36,815 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:56,471 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:56,471 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:56,472 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:56,471 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:56,471 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:56,472 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:32:56,471 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:32:56,472 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:16,132 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:16,132 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:16,132 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:16,132 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:16,132 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:16,132 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:16,132 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:16,133 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:34,964 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:34,964 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:34,964 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:34,964 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:34,964 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:34,964 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:34,964 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:34,965 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:53,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:53,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:53,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:53,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:53,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:53,610 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:33:53,611 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:33:53,610 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:11,850 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:11,850 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:11,850 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:11,850 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:11,850 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:11,851 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:11,850 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:11,851 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:30,320 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:30,320 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:30,320 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:30,320 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:30,320 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:30,321 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:30,320 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:30,321 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:34:50,424 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:09,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:09,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:09,129 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:09,129 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:09,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:09,130 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:09,129 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:09,130 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:27,406 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:35:47,613 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:05,250 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:05,250 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:05,250 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:05,250 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:05,250 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:05,251 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:05,250 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:05,251 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:24,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:24,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:24,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:24,028 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:24,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:24,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:24,028 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:24,029 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:43,311 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:43,311 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:43,311 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:43,311 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:43,311 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:43,312 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:36:43,311 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:36:43,312 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:01,324 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:01,324 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:01,325 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:01,324 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:01,324 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:01,324 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:01,325 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:01,325 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:22,048 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:22,048 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:22,048 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:22,048 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:22,048 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:22,049 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:22,048 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:22,049 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:40,778 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:40,778 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:40,778 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:40,778 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:40,778 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:40,778 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:40,779 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:40,778 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:59,085 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:59,085 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:59,085 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:59,085 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:59,085 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:59,085 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:37:59,085 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:37:59,086 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:38:18,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-19] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:38:18,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:38:18,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:38:18,893 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-19] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:38:18,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:38:18,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:38:18,893 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:38:18,894 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:38:18,896 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-24] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT,List(Content-Type: application/json, Connection: keep-alive, Content-Length: 798, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"eventTime": "2015-04-23T07:55:02.320+0000", "properties": {"text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse                ...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:59:44,218 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-23 01:59:59,652 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:59:59,653 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:59:59,652 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:59:59,653 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 01:59:59,652 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 01:59:59,653 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:19,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:19,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:19,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:19,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:19,010 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:19,010 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:37,527 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:37,527 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:37,528 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:37,528 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:37,528 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:37,528 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:56,759 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:56,759 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:56,759 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:56,759 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:00:56,759 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:00:56,760 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:15,464 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:15,464 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:15,464 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:15,464 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:15,464 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:15,465 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:33,924 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:33,924 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:33,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:33,924 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:33,924 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:33,925 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:51,199 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:51,199 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:51,199 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:51,199 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:01:51,199 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:01:51,200 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:11,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:11,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:11,353 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:11,353 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:11,353 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:11,354 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:29,597 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:29,597 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:29,597 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:29,597 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:29,597 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:29,598 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:47,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:47,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:47,918 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:47,918 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:02:47,917 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:02:47,918 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:06,387 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:06,387 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:06,387 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:06,387 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:06,387 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:06,388 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:25,386 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:25,386 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:25,386 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:25,386 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:25,386 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:25,387 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:45,432 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-18] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:45,432 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:45,432 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:03:45,433 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:45,432 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-18] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:45,433 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:03:45,437 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-24] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 798, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"properties": {"category": "sci.crypt", "label": 11.0, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n--\nEschew Obfuscation\n\nRob deFriesse                    M...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:04:04,152 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:04:04,152 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:04:04,152 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:04:04,152 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:04:24,157 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:04:24,157 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:04:24,157 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:04:24,157 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:04:41,580 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:04:41,580 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:04:41,580 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:04:41,580 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:05:01,137 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:05:01,137 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:05:01,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:05:01,137 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:05:21,063 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:05:21,063 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:05:21,063 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:05:21,063 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:05:40,616 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:05:40,616 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:05:40,616 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:05:40,616 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:06:01,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-20] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:06:01,232 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [EventServerSystem-akka.actor.default-dispatcher-25] - ZooKeeper getData failed after 4 attempts
2015-04-23 02:06:01,232 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-25] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:06:01,232 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [EventServerSystem-akka.actor.default-dispatcher-20] - hconnection-0x60c16548-0x14ce3a1dcf70007, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/meta-region-server
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.getData(ZooKeeper.java:1155)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.getData(RecoverableZooKeeper.java:337)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.getData(ZKUtil.java:683)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.blockUntilAvailable(ZKUtil.java:1835)
	at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:183)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:58)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1102)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1196)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1105)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1062)
	at org.apache.hadoop.hbase.client.AsyncProcess.findDestLocation(AsyncProcess.java:365)
	at org.apache.hadoop.hbase.client.AsyncProcess.submit(AsyncProcess.java:310)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:964)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:06:01,234 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-25] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 798, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "user", "eventTime": "2015-04-23T08:01:17.744+0000", "event": "$set", "properties": {"label": 11.0, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n-...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 02:06:01,236 ERROR akka.actor.LocalActorRef [EventServerSystem-akka.actor.default-dispatcher-25] - Error during processing of request HttpRequest(POST,http://localhost:7070/events.json?accessKey=1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS,List(Connection: keep-alive, Content-Type: application/json, Content-Length: 798, Accept-Encoding: identity, Host: localhost:7070),HttpEntity(application/json,{"entityType": "user", "eventTime": "2015-04-23T08:01:17.744+0000", "event": "$set", "properties": {"label": 11.0, "text": "From: rj@ri.cadre.com (Rob deFriesse)\nSubject: Can DES code be shipped to Canada?\nArticle-I.D.: fripp.1993Apr22.125402.27561\nReply-To: rj@ri.cadre.com\nOrganization: Cadre Technologies Inc.\nLines: 13\nNntp-Posting-Host: 192.9.200.19\n\nSomeone in Canada asked me to send him some public domain DES file\nencryption code I have.  Is it legal for me to send it?\n\nThanx.\n-...),HTTP/1.1)
org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: NoServerForRegionException: 1 time, 
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.makeException(AsyncProcess.java:192)
	at org.apache.hadoop.hbase.client.AsyncProcess$BatchErrors.access$500(AsyncProcess.java:176)
	at org.apache.hadoop.hbase.client.AsyncProcess.getErrors(AsyncProcess.java:913)
	at org.apache.hadoop.hbase.client.HTable.backgroundFlushCommits(HTable.java:984)
	at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1252)
	at org.apache.hadoop.hbase.client.HTable.put(HTable.java:910)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:108)
	at io.prediction.data.storage.hbase.HBLEvents$$anonfun$futureInsert$1.apply(HBLEvents.scala:105)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 14:04:44,486 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 14:04:49,634 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-23 14:04:49,756 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-23 14:04:49,765 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-23 14:04:49,766 INFO  io.prediction.tools.console.App$ [main] - Finished listing 2 app(s).
2015-04-23 14:04:51,970 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-23 14:04:51,970 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-23 14:04:51,971 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-23 14:06:31,747 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_0 doesn't exist yet. Creating now...
2015-04-23 14:06:47,553 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_0...
2015-04-23 14:08:39,631 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 14:08:43,256 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-23 14:08:43,257 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-23 14:09:42,953 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 14:09:46,558 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-23 14:09:46,564 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-23 14:12:59,881 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-23 14:12:59,885 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-23 14:12:59,926 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-23 14:12:59,926 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-23 14:12:59,928 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-23 14:12:59,928 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-23 14:13:26,937 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-23 14:13:26,938 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-23 14:13:26,946 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-23 14:13:26,946 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-23 14:13:26,954 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-23 14:13:28,768 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-23 14:13:28,850 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-23 14:13:28,875 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-23 14:13:29,019 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-23 14:18:54,402 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-23 14:18:54,405 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-23 14:18:56,201 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-23 14:18:59,104 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-23 14:18:59,216 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-23 14:18:59,230 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(1))
2015-04-23 14:18:59,230 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-23 14:18:59,231 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-23 14:18:59,234 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-23 14:18:59,239 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-23 14:18:59,240 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-23 14:20:00,545 ERROR io.prediction.data.storage.elasticsearch.ESEngineInstances [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][engine_instances][AUzoJeclahUnmmF4IWxT], source[{"id":"","status":"INIT","startTime":"2015-04-23T14:18:59.323-07:00","endTime":"2015-04-23T14:18:59.325-07:00","engineId":"0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje","engineVersion":"f8de3b2e82df59a352b216bc539994f3f1bed16d","engineVariant":"default","engineFactory":"TextManipulationEngine.TextManipulationEngine","metricsClass":"","batch":"TextManipulationEngine.TextManipulationEngine","env":{"PIO_STORAGE_SOURCES_HBASE_TYPE":"hbase","PIO_ENV_LOADED":"1","PIO_STORAGE_SOURCES_HBASE_HOSTS":"0","PIO_STORAGE_REPOSITORIES_METADATA_NAME":"predictionio_metadata","PIO_FS_BASEDIR":"/Users/Marco/.pio_store","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS":"localhost","PIO_STORAGE_SOURCES_HBASE_HOME":"/Users/Marco/PredictionIO/vendors/hbase-1.0.0","PIO_HOME":"/Users/Marco/PredictionIO","PIO_FS_ENGINESDIR":"/Users/Marco/.pio_store/engines","PIO_STORAGE_SOURCES_HBASE_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE":"elasticsearch","PIO_STORAGE_REPOSITORIES_METADATA_SOURCE":"ELASTICSEARCH","PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE":"LOCALFS","PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME":"predictionio_eventdata","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME":"/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4","PIO_FS_TMPDIR":"/Users/Marco/.pio_store/tmp","PIO_STORAGE_REPOSITORIES_MODELDATA_NAME":"pio_","PIO_STORAGE_SOURCES_LOCALFS_HOSTS":"/Users/Marco/.pio_store/models","PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE":"HBASE","PIO_CONF_DIR":"/Users/Marco/PredictionIO/conf","PIO_STORAGE_SOURCES_LOCALFS_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS":"9300","PIO_STORAGE_SOURCES_LOCALFS_TYPE":"localfs"},"sparkConf":{"spark.executor.extraClassPath":"."},"dataSourceParams":"{\"\":{\"appId\":1}}","preparatorParams":"{\"\":{\"nMin\":1,\"nMax\":2}}","algorithmsParams":"[{\"sup\":{\"lambda\":1.0}}]","servingParams":"{\"\":{}}","metricsParams":"","multipleMetricsResults":"","multipleMetricsResultsHTML":"","multipleMetricsResultsJSON":""}]}
2015-04-23 14:20:01,462 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-04-23 14:20:01,669 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:49876]
2015-04-23 14:20:04,381 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-23 14:20:04,382 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@131a7516
2015-04-23 14:20:04,383 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@12219f6a
2015-04-23 14:20:04,384 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@1376883)
2015-04-23 14:20:04,384 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-23 14:20:16,032 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-23 14:20:16,192 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-23 14:20:18,972 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-23 14:20:56,192 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-23 14:20:56,602 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-23 14:20:56,654 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-23 14:20:56,656 INFO  io.prediction.tools.console.App$ [main] - Finished listing 2 app(s).
2015-04-23 14:21:21,610 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-04-23 14:21:21,626 INFO  io.prediction.tools.console.App$ [main] -     App Name: test
2015-04-23 14:21:21,675 INFO  io.prediction.tools.console.App$ [main] -       App ID: 2
2015-04-23 14:21:21,682 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-23 14:21:52,420 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_2...
2015-04-23 14:21:58,924 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 2
2015-04-23 14:22:04,197 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_2 doesn't exist yet. Creating now...
2015-04-23 14:22:05,329 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 2.
2015-04-23 14:22:05,439 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-23 14:22:32,274 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-23 14:22:32,560 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-23 14:22:32,585 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-23 14:22:32,588 INFO  io.prediction.tools.console.App$ [main] - Finished listing 2 app(s).
2015-04-23 14:24:17,720 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-23 14:24:17,725 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-23 14:24:17,773 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-23 14:24:17,774 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-23 14:24:17,775 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-23 14:24:17,775 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-23 14:24:36,401 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-23 14:24:36,402 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-23 14:24:36,412 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-23 14:24:36,412 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-23 14:24:36,422 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-23 14:24:38,941 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-23 14:24:39,026 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-23 14:24:39,048 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-23 14:24:39,076 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-23 14:25:26,770 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-23 14:25:26,773 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-23 14:25:28,550 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-23 14:25:31,682 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-23 14:25:31,786 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-23 14:25:31,800 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(2))
2015-04-23 14:25:31,800 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-23 14:25:31,801 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-23 14:25:31,803 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-23 14:25:31,809 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-23 14:25:31,810 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-23 14:25:33,560 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-23 14:25:33,802 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:50085]
2015-04-23 14:25:35,671 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-23 14:25:35,672 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@577536e0
2015-04-23 14:25:35,673 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@7f0b93b4
2015-04-23 14:25:35,673 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@523a7801)
2015-04-23 14:25:35,674 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-23 14:25:42,323 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-23 14:25:47,518 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-23 14:26:11,999 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-23 14:58:06,618 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-23 14:58:06,620 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-23 14:58:06,623 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUzoK-Q2ahUnmmF4IWxU
2015-04-23 14:58:06,674 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-23 14:58:11,815 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-23 14:58:11,896 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-23 14:58:22,705 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-23 14:58:24,976 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUzoK-Q2ahUnmmF4IWxU --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --engineInstanceId AUzoK-Q2ahUnmmF4IWxU --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070
2015-04-23 14:58:29,115 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-2] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-23 14:58:40,779 ERROR io.prediction.data.storage.localfs.LocalFSModels [pio-server-akka.actor.default-dispatcher-2] - Java heap space
2015-04-23 14:58:40,801 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-4] - None.get
java.util.NoSuchElementException: None.get
	at scala.None$.get(Option.scala:313)
	at scala.None$.get(Option.scala:311)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:202)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:369)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:292)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:255)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
2015-04-23 15:39:07,735 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-23 19:18:01,063 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-23 19:18:09,743 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:7070
2015-04-23 19:18:09,744 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Bound received. EventServer is ready.
2015-04-23 19:18:12,517 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-04-23 19:18:12,519 INFO  io.prediction.tools.console.App$ [main] -     App Name: test
2015-04-23 19:18:12,519 INFO  io.prediction.tools.console.App$ [main] -       App ID: 2
2015-04-23 19:18:12,520 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-23 19:18:30,008 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_2...
2015-04-23 19:18:35,674 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 2
2015-04-23 19:18:35,843 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_2 doesn't exist yet. Creating now...
2015-04-23 19:18:36,176 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 2.
2015-04-23 19:18:36,279 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-23 19:19:03,373 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-23 19:19:03,495 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-23 19:19:03,504 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-23 19:19:03,504 INFO  io.prediction.tools.console.App$ [main] - Finished listing 2 app(s).
2015-04-23 19:20:05,300 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-23 19:20:05,303 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-23 19:20:05,340 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-23 19:20:05,340 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-23 19:20:05,341 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-23 19:20:05,342 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-23 19:20:29,304 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-23 19:20:29,308 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-23 19:20:29,324 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-23 19:20:29,324 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-23 19:20:29,341 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-23 19:20:31,821 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-23 19:20:31,936 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-23 19:20:31,953 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-23 19:20:32,026 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-23 19:21:11,723 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-23 19:21:11,726 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-23 19:21:13,443 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-23 19:21:16,006 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-23 19:21:16,086 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-23 19:21:16,096 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(2))
2015-04-23 19:21:16,096 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-23 19:21:16,097 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-23 19:21:16,099 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2))
2015-04-23 19:21:16,104 ERROR io.prediction.workflow.WorkflowUtils$ [main] - Unable to extract parameters for TextManipulationEngine.SupervisedAlgorithmParams from JSON string: {"lambda":1.0}. Aborting workflow.
2015-04-23 22:28:32,207 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-24 00:44:20,267 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-24 00:44:28,665 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-24 00:44:28,667 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-24 00:44:28,684 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-24 12:56:31,239 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-24 12:56:31,348 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-24 12:56:31,357 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-24 12:56:31,358 INFO  io.prediction.tools.console.App$ [main] - Finished listing 2 app(s).
2015-04-24 12:56:49,378 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_3 doesn't exist yet. Creating now...
2015-04-24 12:56:49,711 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 3.
2015-04-24 12:57:49,932 ERROR io.prediction.data.storage.elasticsearch.ESAccessKeys [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][accesskeys][LO4wBvzuEtLRCA1eMPHCPJzHNDVzUUUegmonwIaLPlmkkouxgjN2bLkM8DnWYOTd], source[{"key":"LO4wBvzuEtLRCA1eMPHCPJzHNDVzUUUegmonwIaLPlmkkouxgjN2bLkM8DnWYOTd","appid":3,"events":[]}]}
2015-04-24 12:57:49,936 ERROR io.prediction.tools.console.App$ [main] - Unable to create new access key.
2015-04-24 12:58:19,318 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-24 12:58:19,385 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-24 12:58:19,397 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-24 12:58:19,398 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-24 12:59:23,766 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 12:59:23,770 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 12:59:23,800 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 12:59:23,800 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 12:59:23,802 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 12:59:23,803 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 12:59:49,244 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-24 12:59:49,245 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-24 12:59:49,254 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 12:59:49,254 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 12:59:49,261 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-24 12:59:51,220 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 12:59:51,344 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 12:59:51,358 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-24 12:59:51,389 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-24 13:01:13,848 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 13:01:13,851 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 13:01:15,612 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-24 13:01:18,537 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-24 13:01:18,636 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 13:01:18,648 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test))
2015-04-24 13:01:18,648 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-24 13:01:18,649 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 13:01:18,652 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-24 13:01:18,659 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-24 13:01:18,661 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-24 13:02:20,083 ERROR io.prediction.data.storage.elasticsearch.ESEngineInstances [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][engine_instances][AUztBSavIaB0reTrvc6J], source[{"id":"","status":"INIT","startTime":"2015-04-24T13:01:18.737-07:00","endTime":"2015-04-24T13:01:18.739-07:00","engineId":"0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje","engineVersion":"f8de3b2e82df59a352b216bc539994f3f1bed16d","engineVariant":"default","engineFactory":"TextManipulationEngine.TextManipulationEngine","metricsClass":"","batch":"TextManipulationEngine.TextManipulationEngine","env":{"PIO_STORAGE_SOURCES_HBASE_TYPE":"hbase","PIO_ENV_LOADED":"1","PIO_STORAGE_SOURCES_HBASE_HOSTS":"0","PIO_STORAGE_REPOSITORIES_METADATA_NAME":"predictionio_metadata","PIO_FS_BASEDIR":"/Users/Marco/.pio_store","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS":"localhost","PIO_STORAGE_SOURCES_HBASE_HOME":"/Users/Marco/PredictionIO/vendors/hbase-1.0.0","PIO_HOME":"/Users/Marco/PredictionIO","PIO_FS_ENGINESDIR":"/Users/Marco/.pio_store/engines","PIO_STORAGE_SOURCES_HBASE_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE":"elasticsearch","PIO_STORAGE_REPOSITORIES_METADATA_SOURCE":"ELASTICSEARCH","PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE":"LOCALFS","PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME":"predictionio_eventdata","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME":"/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4","PIO_FS_TMPDIR":"/Users/Marco/.pio_store/tmp","PIO_STORAGE_REPOSITORIES_MODELDATA_NAME":"pio_","PIO_STORAGE_SOURCES_LOCALFS_HOSTS":"/Users/Marco/.pio_store/models","PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE":"HBASE","PIO_CONF_DIR":"/Users/Marco/PredictionIO/conf","PIO_STORAGE_SOURCES_LOCALFS_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS":"9300","PIO_STORAGE_SOURCES_LOCALFS_TYPE":"localfs"},"sparkConf":{"spark.executor.extraClassPath":"."},"dataSourceParams":"{\"\":{\"appName\":\"test\"}}","preparatorParams":"{\"\":{\"nMin\":1,\"nMax\":2,\"tfidf\":true}}","algorithmsParams":"[{\"sup\":{\"lambda\":0.4}}]","servingParams":"{\"\":{}}","metricsParams":"","multipleMetricsResults":"","multipleMetricsResultsHTML":"","multipleMetricsResultsJSON":""}]}
2015-04-24 13:02:21,239 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-24 13:02:21,445 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@marcos-mbp:54597]
2015-04-24 13:02:22,899 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-24 13:02:22,899 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@122635ef
2015-04-24 13:02:22,900 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@1de4bee0
2015-04-24 13:02:22,901 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@1e01b133)
2015-04-24 13:02:22,901 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-24 13:02:34,329 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-24 13:02:35,530 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-24 13:03:58,522 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-24 13:03:58,580 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-24 13:03:58,597 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-24 13:03:58,598 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-24 13:05:58,179 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 13:05:58,201 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 13:05:58,421 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 13:05:58,423 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 13:05:58,428 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 13:05:58,442 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 14:02:06,425 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-24 14:02:10,050 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-24 14:02:10,052 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-24 14:02:16,752 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 14:02:16,755 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 14:02:16,781 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 14:02:16,781 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 14:02:16,782 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 14:02:16,782 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 14:02:34,902 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/TextManipulationEngine/src/main/scala/TextManipulationEngine/DataSource.scala:51: type mismatch;[0m
2015-04-24 14:02:34,903 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m found   : Unit[0m
2015-04-24 14:02:34,904 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m required: Seq[(TextManipulationEngine.TrainingData, io.prediction.controller.EmptyEvaluationInfo, org.apache.spark.rdd.RDD[(TextManipulationEngine.Query, TextManipulationEngine.ActualResult)])][0m
2015-04-24 14:02:34,904 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m  }[0m
2015-04-24 14:02:34,910 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m  ^[0m
2015-04-24 14:02:36,657 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mone error found[0m
2015-04-24 14:02:36,710 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(compile:[31mcompile[0m) Compilation failed[0m
2015-04-24 14:02:36,722 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 13 s, completed Apr 24, 2015 2:02:36 PM[0m
2015-04-24 14:02:36,933 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-04-24 14:18:50,630 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 14:18:50,642 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 14:18:50,674 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 14:18:50,674 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 14:18:50,675 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 14:18:50,676 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 14:19:52,765 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-24 14:19:52,774 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-24 14:19:52,789 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 14:19:52,789 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 14:19:52,808 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-24 14:19:56,236 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 14:19:56,352 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 14:19:56,375 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-24 14:19:56,456 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-24 14:21:31,196 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 14:21:31,199 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 14:21:33,014 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-24 14:21:36,061 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-24 14:21:36,168 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 14:21:36,380 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-24 14:21:36,381 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-24 14:21:36,381 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 14:21:36,384 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-24 14:21:36,391 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-24 14:21:36,397 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-24 14:21:38,179 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-24 14:21:38,398 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:55200]
2015-04-24 14:21:39,872 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-24 14:21:39,873 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@16ee9aa7
2015-04-24 14:21:39,873 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@73e776b7
2015-04-24 14:21:39,874 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@43da0955)
2015-04-24 14:21:39,874 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-24 14:21:51,546 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-24 14:21:52,345 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-24 15:12:31,402 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 15:12:31,406 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 15:12:31,450 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 15:12:31,450 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 15:12:31,452 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 15:12:31,452 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 15:18:02,683 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 15:18:02,686 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 15:18:02,722 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 15:18:02,723 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 15:18:02,724 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 15:18:02,725 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 15:18:25,853 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-24 15:18:25,854 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-24 15:18:25,865 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 15:18:25,865 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 15:18:25,874 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-24 15:18:27,755 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 15:18:27,839 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 15:18:27,858 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-24 15:18:27,890 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-24 15:19:02,026 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 15:19:02,029 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 15:19:03,822 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-24 15:19:06,690 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-24 15:19:06,800 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 15:19:07,010 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-24 15:19:07,010 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-24 15:19:07,011 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 15:19:07,015 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-24 15:19:07,022 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-24 15:19:07,028 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-24 15:19:08,722 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-24 15:19:08,907 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:55495]
2015-04-24 15:19:10,780 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-24 15:19:10,780 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@57e5396b
2015-04-24 15:19:10,781 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@27b337bb
2015-04-24 15:19:10,781 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@6cbb175)
2015-04-24 15:19:10,782 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-24 15:19:22,541 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-24 15:19:26,857 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-24 15:28:39,397 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 15:28:39,401 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 15:28:41,605 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-24 15:28:44,558 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-24 15:28:44,660 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 15:28:44,870 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-24 15:28:44,871 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-24 15:28:44,871 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 15:28:44,875 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-24 15:28:44,881 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-24 15:28:44,887 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-24 15:28:46,630 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-24 15:28:46,843 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:55678]
2015-04-24 15:28:48,695 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-24 15:28:48,695 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@57e5396b
2015-04-24 15:28:48,696 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@27b337bb
2015-04-24 15:28:48,697 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@6cbb175)
2015-04-24 15:28:48,697 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-24 15:29:00,582 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-24 15:29:02,359 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-24 18:45:58,900 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_0 doesn't exist yet. Creating now...
2015-04-24 18:46:09,672 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_0...
2015-04-24 18:46:31,823 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-24 18:46:31,902 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-24 18:46:31,915 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-24 18:46:31,916 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-24 18:49:08,869 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-24 18:49:08,922 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-24 18:49:08,942 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-24 18:49:08,943 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-24 19:02:55,518 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 19:02:55,522 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 19:02:55,566 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 19:02:55,567 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 19:02:55,568 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 19:02:55,569 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 19:03:15,497 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/TextManipulationEngine/src/main/scala/TextManipulationEngine/DataModel.scala:43: type mismatch;[0m
2015-04-24 19:03:15,498 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m found   : Iterator[(String, Double)][0m
2015-04-24 19:03:15,498 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m required: Map[String,Double][0m
2015-04-24 19:03:15,498 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m    ).filter(e => !stopWords.contains(e._1))[0m
2015-04-24 19:03:15,502 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m            ^[0m
2015-04-24 19:03:17,220 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mone error found[0m
2015-04-24 19:03:17,245 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(compile:[31mcompile[0m) Compilation failed[0m
2015-04-24 19:03:17,254 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 14 s, completed Apr 24, 2015 7:03:17 PM[0m
2015-04-24 19:03:17,363 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-04-24 19:06:01,615 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 19:06:01,618 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 19:06:01,659 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 19:06:01,660 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 19:06:01,661 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 19:06:01,661 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 19:06:24,307 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-24 19:06:24,307 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-24 19:06:24,315 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 19:06:24,315 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 19:06:24,324 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-24 19:06:26,080 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 19:06:26,169 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 19:06:26,189 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-24 19:06:26,221 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-24 19:07:19,172 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 19:07:19,175 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 19:07:21,015 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-24 19:07:23,969 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-24 19:07:24,074 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 19:07:24,354 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-24 19:07:24,355 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-24 19:07:24,355 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 19:07:24,359 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-24 19:07:24,366 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-24 19:07:24,371 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-24 19:07:26,321 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-24 19:07:26,498 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:57051]
2015-04-24 19:07:28,740 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-24 19:07:28,741 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@3c9ef6e9
2015-04-24 19:07:28,741 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@2f054f70
2015-04-24 19:07:28,742 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@59636c47)
2015-04-24 19:07:28,742 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-24 19:12:01,881 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 19:12:01,886 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 19:12:01,935 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 19:12:01,936 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 19:12:01,938 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 19:12:01,940 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 19:12:51,643 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-24 19:12:51,645 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-24 19:12:51,664 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 19:12:51,665 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 19:12:51,688 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-24 19:13:00,474 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 19:13:00,724 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 19:13:00,750 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-24 19:13:00,862 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-24 19:13:40,309 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 19:13:40,314 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 19:13:42,668 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-24 19:16:50,158 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 19:16:50,161 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 19:16:50,212 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-24 19:16:50,213 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-24 19:16:50,214 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-24 19:16:50,215 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-24 19:17:13,933 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-24 19:17:13,934 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-24 19:17:13,943 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 19:17:13,943 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 19:17:13,951 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-24 19:17:15,606 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-24 19:17:15,691 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-24 19:17:15,709 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-24 19:17:15,740 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-24 19:17:22,896 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-24 19:17:22,900 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-24 19:17:24,708 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-24 19:17:27,313 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-24 19:17:27,424 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 19:17:27,661 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-24 19:17:27,662 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-24 19:17:27,663 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-24 19:17:27,668 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-24 19:17:27,674 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-24 19:17:27,679 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-24 19:18:28,891 ERROR io.prediction.data.storage.elasticsearch.ESEngineInstances [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][engine_instances][AUzuXYXvagvRfoF6fm_J], source[{"id":"","status":"INIT","startTime":"2015-04-24T19:17:27.781-07:00","endTime":"2015-04-24T19:17:27.784-07:00","engineId":"0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje","engineVersion":"f8de3b2e82df59a352b216bc539994f3f1bed16d","engineVariant":"default","engineFactory":"TextManipulationEngine.TextManipulationEngine","metricsClass":"","batch":"TextManipulationEngine.TextManipulationEngine","env":{"PIO_STORAGE_SOURCES_HBASE_TYPE":"hbase","PIO_ENV_LOADED":"1","PIO_STORAGE_SOURCES_HBASE_HOSTS":"0","PIO_STORAGE_REPOSITORIES_METADATA_NAME":"predictionio_metadata","PIO_FS_BASEDIR":"/Users/Marco/.pio_store","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS":"localhost","PIO_STORAGE_SOURCES_HBASE_HOME":"/Users/Marco/PredictionIO/vendors/hbase-1.0.0","PIO_HOME":"/Users/Marco/PredictionIO","PIO_FS_ENGINESDIR":"/Users/Marco/.pio_store/engines","PIO_STORAGE_SOURCES_HBASE_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE":"elasticsearch","PIO_STORAGE_REPOSITORIES_METADATA_SOURCE":"ELASTICSEARCH","PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE":"LOCALFS","PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME":"predictionio_eventdata","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME":"/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4","PIO_FS_TMPDIR":"/Users/Marco/.pio_store/tmp","PIO_STORAGE_REPOSITORIES_MODELDATA_NAME":"pio_","PIO_STORAGE_SOURCES_LOCALFS_HOSTS":"/Users/Marco/.pio_store/models","PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE":"HBASE","PIO_CONF_DIR":"/Users/Marco/PredictionIO/conf","PIO_STORAGE_SOURCES_LOCALFS_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS":"9300","PIO_STORAGE_SOURCES_LOCALFS_TYPE":"localfs"},"sparkConf":{"spark.executor.extraClassPath":"."},"dataSourceParams":"{\"\":{\"appName\":\"test\"}}","preparatorParams":"{\"\":{\"nMin\":1,\"nMax\":2,\"tfidf\":true}}","algorithmsParams":"[{\"sup\":{\"lambda\":0.4}}]","servingParams":"{\"\":{}}","metricsParams":"","multipleMetricsResults":"","multipleMetricsResultsHTML":"","multipleMetricsResultsJSON":""}]}
2015-04-24 19:18:29,537 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-24 19:18:29,774 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:57235]
2015-04-24 19:18:31,624 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-24 19:18:31,625 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@6467ddc7
2015-04-24 19:18:31,625 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@5c18d6d4
2015-04-24 19:18:31,626 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@7ab802f4)
2015-04-24 19:18:31,626 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-24 19:18:43,402 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-24 19:18:50,448 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-24 19:19:26,286 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-25 14:54:12,200 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-25 14:54:12,208 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-25 14:54:12,310 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-25 14:54:12,311 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-25 14:54:12,313 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-25 14:54:12,314 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-25 14:54:43,177 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-25 14:54:43,181 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-25 14:54:43,208 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-25 14:54:43,209 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-25 14:54:43,234 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-25 14:54:49,847 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-25 14:54:50,126 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-25 14:54:50,204 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-25 14:54:50,324 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-25 14:57:57,763 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-25 14:57:57,766 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-25 14:57:59,582 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://marcos-mbp:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-25 14:58:02,363 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-25 14:58:02,469 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-25 14:58:02,684 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-25 14:58:02,684 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-25 14:58:02,685 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-25 14:58:02,689 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-25 14:58:02,697 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-25 14:58:02,703 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-25 14:58:04,375 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-25 14:58:04,574 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@marcos-mbp:57570]
2015-04-25 14:58:06,410 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-25 14:58:06,411 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1f7cec93
2015-04-25 14:58:06,412 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@57e5396b
2015-04-25 14:58:06,412 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@27b337bb)
2015-04-25 14:58:06,413 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-25 14:58:13,608 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-25 14:58:58,012 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-25 15:12:23,554 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-25 15:12:23,645 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-25 15:12:23,664 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-25 15:12:23,664 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-25 15:22:14,224 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-25 15:22:14,288 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-25 15:22:14,302 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-25 15:22:14,303 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-27 10:40:38,248 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 10:40:55,138 WARN  org.elasticsearch.common [main] - Unable to get a valid mac address, will use a dummy address
2015-04-27 10:40:56,792 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-5] - Bound to /0.0.0.0:7070
2015-04-27 10:40:56,793 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-5] - Bound received. EventServer is ready.
2015-04-27 10:42:05,831 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 10:42:15,760 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-27 10:42:15,761 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-27 10:57:31,296 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-27 10:57:31,417 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-27 10:57:31,430 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-27 10:57:31,431 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-27 10:57:50,147 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-04-27 10:57:50,149 INFO  io.prediction.tools.console.App$ [main] -     App Name: test
2015-04-27 10:57:50,149 INFO  io.prediction.tools.console.App$ [main] -       App ID: 2
2015-04-27 10:57:50,150 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-27 10:57:53,888 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_2...
2015-04-27 10:57:59,279 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 2
2015-04-27 10:57:59,426 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_2 doesn't exist yet. Creating now...
2015-04-27 10:58:04,798 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 2.
2015-04-27 10:58:04,903 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-27 11:18:57,114 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-27 11:19:58,887 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 11:20:03,480 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:7070
2015-04-27 11:20:03,483 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-4] - Bound received. EventServer is ready.
2015-04-27 11:20:30,009 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-27 11:20:30,125 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-27 11:20:30,143 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-27 11:20:30,143 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-04-27 11:26:27,067 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-27 11:27:48,446 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 11:27:48,449 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 11:27:48,489 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 11:27:48,491 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 11:27:48,493 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 11:27:48,493 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 11:28:12,770 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 11:28:12,770 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 11:28:12,776 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 11:28:12,777 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 11:28:12,783 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 11:28:14,569 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 11:28:14,658 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 11:28:14,670 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 11:28:14,757 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 11:30:32,218 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 11:30:32,221 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 11:30:33,925 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 11:30:36,650 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 11:30:36,725 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 11:30:36,912 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-27 11:30:36,913 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 11:30:36,914 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 11:30:36,917 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-27 11:30:36,925 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 11:30:36,931 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 11:30:38,596 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 11:30:38,767 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@172.31.98.41:58729]
2015-04-27 11:30:40,261 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 11:30:40,261 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@5aa62ee7
2015-04-27 11:30:40,262 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@3cdff901
2015-04-27 11:30:40,263 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@6467ddc7)
2015-04-27 11:30:40,264 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 11:30:47,151 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-27 11:30:47,152 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x45d56062, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:38)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:20)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 11:30:47,156 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:38)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:20)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 11:30:47,355 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-27 11:30:47,356 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 11:30:47,357 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-27 11:30:47,358 ERROR io.prediction.controller.Engine$ [main] - Error occured reading from data source. (Reason: Data source HBASE was not properly initialized.) Please see the log for debugging details.
io.prediction.data.storage.StorageClientException: Data source HBASE was not properly initialized.
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:189)
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:189)
	at scala.Option.getOrElse(Option.scala:120)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:38)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:20)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 11:31:13,365 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-27 11:31:13,368 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x6f9ad11c, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.storage.Storage$.verifyAllDataObjects(Storage.scala:247)
	at io.prediction.tools.console.Console$.status(Console.scala:1070)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:694)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-27 11:31:13,371 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.storage.Storage$.verifyAllDataObjects(Storage.scala:247)
	at io.prediction.tools.console.Console$.status(Console.scala:1070)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:694)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-27 11:31:14,583 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-27 11:31:14,584 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 11:31:14,585 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-27 11:31:55,068 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 11:32:02,849 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-27 11:32:02,850 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x7cbee484, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.api.EventServer$.createEventServer(EventAPI.scala:453)
	at io.prediction.tools.console.Console$.eventserver(Console.scala:881)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:685)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-27 11:32:02,854 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.api.EventServer$.createEventServer(EventAPI.scala:453)
	at io.prediction.tools.console.Console$.eventserver(Console.scala:881)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:685)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-27 11:32:03,054 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-27 11:32:03,055 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 11:32:03,055 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-27 11:32:07,266 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 11:32:07,269 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 11:32:09,062 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 11:32:11,782 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 11:32:11,858 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 11:32:12,041 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-27 11:32:12,042 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 11:32:12,043 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 11:32:12,047 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-27 11:32:12,053 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 11:32:12,062 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 11:32:13,930 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 11:32:14,093 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@172.31.98.41:58839]
2015-04-27 11:32:15,607 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 11:32:15,608 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@553d2579
2015-04-27 11:32:15,609 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@668cc9a2
2015-04-27 11:32:15,610 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3c9ef6e9)
2015-04-27 11:32:15,611 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 11:32:21,550 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-27 11:32:21,551 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x1a8e9ed9, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:38)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:20)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 11:32:21,555 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:38)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:20)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 11:32:22,755 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-27 11:32:22,756 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 11:32:22,757 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-27 11:32:22,759 ERROR io.prediction.controller.Engine$ [main] - Error occured reading from data source. (Reason: Data source HBASE was not properly initialized.) Please see the log for debugging details.
io.prediction.data.storage.StorageClientException: Data source HBASE was not properly initialized.
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:189)
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:189)
	at scala.Option.getOrElse(Option.scala:120)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:38)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:20)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 11:35:25,314 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 11:35:33,709 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-27 11:35:33,710 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-27 11:35:59,986 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 11:35:59,988 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 11:36:01,754 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 11:36:04,353 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 11:36:04,424 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 11:36:04,603 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-27 11:36:04,603 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 11:36:04,604 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 11:36:04,607 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-27 11:36:04,613 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 11:36:04,619 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 11:36:06,281 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 11:36:06,485 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@172.31.98.41:59028]
2015-04-27 11:36:07,949 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 11:36:07,950 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@3c9ef6e9
2015-04-27 11:36:07,952 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@2f054f70
2015-04-27 11:36:07,953 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@59636c47)
2015-04-27 11:36:07,954 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 12:09:22,110 WARN  org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation [main-EventThread] - This client just lost it's session with ZooKeeper, closing it. It will be recreated next time someone needs it
org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.connectionEvent(ZooKeeperWatcher.java:401)
	at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:319)
	at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:522)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:498)
2015-04-27 12:21:17,999 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:21:18,002 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:21:18,041 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 12:21:18,041 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 12:21:18,042 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 12:21:18,042 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 12:21:40,592 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 12:21:40,594 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 12:21:40,604 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 12:21:40,604 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 12:21:40,612 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 12:21:42,254 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 12:21:42,326 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 12:21:42,340 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 12:24:14,735 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 12:24:16,904 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-27 12:24:16,905 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 12:24:16,906 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-27 12:24:56,831 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:24:56,834 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:24:56,875 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 12:24:56,875 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 12:24:56,876 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 12:24:56,877 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 12:25:04,449 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 12:25:04,450 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 12:25:04,460 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 12:25:04,460 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 12:25:04,468 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 12:25:06,325 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 12:25:06,397 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 12:25:06,411 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 12:25:06,522 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 12:25:51,001 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:25:51,004 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:25:52,800 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 12:25:55,613 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 12:25:55,686 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 12:25:55,864 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-27 12:25:55,864 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 12:25:55,865 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 12:25:55,868 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-27 12:25:55,875 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 12:25:55,881 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 12:25:57,754 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 12:25:57,965 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:59496]
2015-04-27 12:25:59,445 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 12:25:59,446 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@3c9ef6e9
2015-04-27 12:25:59,446 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@2f054f70
2015-04-27 12:25:59,447 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@59636c47)
2015-04-27 12:25:59,448 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 12:26:11,405 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 12:26:13,043 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 12:26:30,131 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 12:29:08,024 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-27 12:29:08,025 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-27 12:29:08,026 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUz8V9aCR6m3PUjTlBrN
2015-04-27 12:29:08,046 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-27 12:29:08,848 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-27 12:29:08,879 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-27 12:30:05,407 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:30:11,370 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUz8V9aCR6m3PUjTlBrN --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --engineInstanceId AUz8V9aCR6m3PUjTlBrN --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070
2015-04-27 12:30:22,600 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-27 12:30:29,386 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 12:30:29,759 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:59600]
2015-04-27 12:30:32,196 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Using persisted model
2015-04-27 12:30:32,198 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Loaded model TextManipulationEngine.SupervisedModel for algorithm TextManipulationEngine.SupervisedAlgorithm
2015-04-27 12:30:32,240 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-04-27 12:30:32,370 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Nothing at http://0.0.0.0:8000
2015-04-27 12:30:34,669 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-5] - Bound to /0.0.0.0:8000
2015-04-27 12:30:34,670 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-4] - Bind successful. Ready to serve.
2015-04-27 12:41:58,778 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:41:58,800 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:42:00,620 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.MSMSEEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 12:42:19,074 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:42:19,077 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:42:20,878 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.MSEEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 12:47:36,577 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:47:36,580 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:47:38,410 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.MSEEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 12:49:49,637 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:49:49,640 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:49:51,487 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.MSEEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 12:50:44,898 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:50:44,901 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:50:46,728 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.MSEEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 12:54:24,620 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:54:24,623 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:54:24,665 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 12:54:24,665 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 12:54:24,668 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 12:54:24,668 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 12:54:46,263 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 12:54:46,263 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 12:54:46,272 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 12:54:46,272 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 12:54:46,281 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 12:54:48,049 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 12:54:48,132 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 12:54:48,146 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 12:54:48,175 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 12:55:20,685 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:55:20,688 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:55:22,521 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.AccuracyEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 12:55:26,337 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-04-27 12:55:26,948 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-04-27 12:55:27,114 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:59928]
2015-04-27 12:56:28,300 ERROR io.prediction.data.storage.elasticsearch.ESEvaluationInstances [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][evaluation_instances][AUz8ctx5R6m3PUjTlBrO], source[{"id":"","status":"","startTime":"2015-04-27T12:55:26.327-07:00","endTime":"2015-04-27T12:55:26.330-07:00","evaluationClass":"TextManipulationEngine.AccuracyEvaluation","engineParamsGeneratorClass":"TextManipulationEngine.EngineParamsList","batch":"","env":{"PIO_STORAGE_SOURCES_HBASE_TYPE":"hbase","PIO_ENV_LOADED":"1","PIO_STORAGE_SOURCES_HBASE_HOSTS":"0","PIO_STORAGE_REPOSITORIES_METADATA_NAME":"predictionio_metadata","PIO_FS_BASEDIR":"/Users/Marco/.pio_store","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS":"localhost","PIO_STORAGE_SOURCES_HBASE_HOME":"/Users/Marco/PredictionIO/vendors/hbase-1.0.0","PIO_HOME":"/Users/Marco/PredictionIO","PIO_FS_ENGINESDIR":"/Users/Marco/.pio_store/engines","PIO_STORAGE_SOURCES_HBASE_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE":"elasticsearch","PIO_STORAGE_REPOSITORIES_METADATA_SOURCE":"ELASTICSEARCH","PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE":"LOCALFS","PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME":"predictionio_eventdata","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME":"/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4","PIO_FS_TMPDIR":"/Users/Marco/.pio_store/tmp","PIO_STORAGE_REPOSITORIES_MODELDATA_NAME":"pio_","PIO_STORAGE_SOURCES_LOCALFS_HOSTS":"/Users/Marco/.pio_store/models","PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE":"HBASE","PIO_CONF_DIR":"/Users/Marco/PredictionIO/conf","PIO_STORAGE_SOURCES_LOCALFS_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS":"9300","PIO_STORAGE_SOURCES_LOCALFS_TYPE":"localfs"},"sparkConf":{"spark.executor.extraClassPath":"."},"evaluatorResults":"","evaluatorResultsHTML":"","evaluatorResultsJSON":""}]}
2015-04-27 12:56:28,301 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: 
2015-04-27 12:56:28,305 ERROR io.prediction.core.Doer$ [main] - io.prediction.controller.EmptyParams was used as the constructor argument to TextManipulationEngine.Preparator.<init>(), but no constructor can handle it. Aborting.
2015-04-27 12:59:47,034 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 12:59:47,038 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 12:59:47,078 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 12:59:47,078 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 12:59:47,079 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 12:59:47,079 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 13:00:07,401 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 13:00:07,402 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 13:00:07,408 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:00:07,408 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:00:07,415 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 13:00:09,157 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:00:09,240 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:00:09,252 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 13:00:09,290 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 13:00:13,897 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:00:13,900 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:00:15,749 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.AccuracyEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 13:00:19,491 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-04-27 13:00:20,081 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 13:00:20,264 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:59998]
2015-04-27 13:01:21,343 ERROR io.prediction.data.storage.elasticsearch.ESEvaluationInstances [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][evaluation_instances][AUz8d1VER6m3PUjTlBrP], source[{"id":"","status":"","startTime":"2015-04-27T13:00:19.480-07:00","endTime":"2015-04-27T13:00:19.482-07:00","evaluationClass":"TextManipulationEngine.AccuracyEvaluation","engineParamsGeneratorClass":"TextManipulationEngine.EngineParamsList","batch":"","env":{"PIO_STORAGE_SOURCES_HBASE_TYPE":"hbase","PIO_ENV_LOADED":"1","PIO_STORAGE_SOURCES_HBASE_HOSTS":"0","PIO_STORAGE_REPOSITORIES_METADATA_NAME":"predictionio_metadata","PIO_FS_BASEDIR":"/Users/Marco/.pio_store","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS":"localhost","PIO_STORAGE_SOURCES_HBASE_HOME":"/Users/Marco/PredictionIO/vendors/hbase-1.0.0","PIO_HOME":"/Users/Marco/PredictionIO","PIO_FS_ENGINESDIR":"/Users/Marco/.pio_store/engines","PIO_STORAGE_SOURCES_HBASE_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE":"elasticsearch","PIO_STORAGE_REPOSITORIES_METADATA_SOURCE":"ELASTICSEARCH","PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE":"LOCALFS","PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME":"predictionio_eventdata","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME":"/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4","PIO_FS_TMPDIR":"/Users/Marco/.pio_store/tmp","PIO_STORAGE_REPOSITORIES_MODELDATA_NAME":"pio_","PIO_STORAGE_SOURCES_LOCALFS_HOSTS":"/Users/Marco/.pio_store/models","PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE":"HBASE","PIO_CONF_DIR":"/Users/Marco/PredictionIO/conf","PIO_STORAGE_SOURCES_LOCALFS_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS":"9300","PIO_STORAGE_SOURCES_LOCALFS_TYPE":"localfs"},"sparkConf":{"spark.executor.extraClassPath":"."},"evaluatorResults":"","evaluatorResultsHTML":"","evaluatorResultsJSON":""}]}
2015-04-27 13:01:21,344 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: 
2015-04-27 13:01:21,351 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@6436e181
2015-04-27 13:01:21,352 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@65ef48f2
2015-04-27 13:01:21,352 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3d88e6b9)
2015-04-27 13:01:21,353 INFO  io.prediction.controller.Engine$ [main] - Serving: TextManipulationEngine.Serving@73afe2b7
2015-04-27 13:01:32,978 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 13:01:33,843 ERROR org.apache.spark.executor.Executor [Executor task launch worker-0] - Exception in task 0.0 in stage 1.0 (TID 1)
java.lang.ArithmeticException: / by zero
	at TextManipulationEngine.DataSource$$anonfun$readEval$1$$anonfun$apply$1.apply(DataSource.scala:53)
	at TextManipulationEngine.DataSource$$anonfun$readEval$1$$anonfun$apply$1.apply(DataSource.scala:53)
	at scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:390)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at org.apache.spark.util.Utils$.getIteratorSize(Utils.scala:1466)
	at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1006)
	at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1006)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1497)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1497)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-27 13:01:33,853 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-1] - Lost task 0.0 in stage 1.0 (TID 1, localhost): java.lang.ArithmeticException: / by zero
	at TextManipulationEngine.DataSource$$anonfun$readEval$1$$anonfun$apply$1.apply(DataSource.scala:53)
	at TextManipulationEngine.DataSource$$anonfun$readEval$1$$anonfun$apply$1.apply(DataSource.scala:53)
	at scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:390)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at org.apache.spark.util.Utils$.getIteratorSize(Utils.scala:1466)
	at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1006)
	at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1006)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1497)
	at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:1497)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)

2015-04-27 13:01:33,855 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-1] - Task 0 in stage 1.0 failed 1 times; aborting job
2015-04-27 13:02:23,889 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:02:23,900 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:02:24,043 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 13:02:24,046 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 13:02:24,047 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 13:02:24,048 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 13:04:41,440 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 13:04:41,445 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 13:04:41,485 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:04:41,485 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:04:41,523 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 13:04:50,641 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:04:50,935 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:04:50,984 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 13:04:51,123 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 13:13:09,131 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:13:09,134 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:13:11,078 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 13:13:14,068 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 13:13:14,148 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 13:13:14,338 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-27 13:13:14,339 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 13:13:14,339 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 13:13:14,343 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-27 13:13:14,349 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 13:13:14,356 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 13:13:16,094 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-6] - Starting remoting
2015-04-27 13:13:16,273 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:60242]
2015-04-27 13:13:17,868 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 13:13:17,869 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@553d2579
2015-04-27 13:13:17,870 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@668cc9a2
2015-04-27 13:13:17,870 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3c9ef6e9)
2015-04-27 13:13:17,871 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 13:13:24,812 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-27 13:13:24,821 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x51ff3c4b, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:35)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:18)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 13:13:24,825 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1041)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:35)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:18)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 13:13:25,017 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-27 13:13:25,018 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 13:13:25,018 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-04-27 13:13:25,019 ERROR io.prediction.controller.Engine$ [main] - Error occured reading from data source. (Reason: Data source HBASE was not properly initialized.) Please see the log for debugging details.
io.prediction.data.storage.StorageClientException: Data source HBASE was not properly initialized.
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:189)
	at io.prediction.data.storage.Storage$$anonfun$9.apply(Storage.scala:189)
	at scala.Option.getOrElse(Option.scala:120)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:229)
	at io.prediction.data.storage.Storage$.getPDataObject(Storage.scala:180)
	at io.prediction.data.storage.Storage$.getPEvents(Storage.scala:290)
	at io.prediction.data.store.PEventStore$.eventsDb$lzycompute(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.eventsDb(PEventStore.scala:32)
	at io.prediction.data.store.PEventStore$.find(PEventStore.scala:68)
	at TextManipulationEngine.DataSource.readEventData(DataSource.scala:35)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:44)
	at TextManipulationEngine.DataSource.readTraining(DataSource.scala:18)
	at io.prediction.controller.PDataSource.readTrainingBase(PDataSource.scala:38)
	at io.prediction.controller.Engine$.train(Engine.scala:602)
	at io.prediction.controller.Engine.train(Engine.scala:152)
	at io.prediction.workflow.CoreWorkflow$.runTrain(CoreWorkflow.scala:60)
	at io.prediction.workflow.CreateWorkflow$.main(CreateWorkflow.scala:257)
	at io.prediction.workflow.CreateWorkflow.main(CreateWorkflow.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:569)
	at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:166)
	at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:189)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:110)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
2015-04-27 13:15:09,805 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 13:15:16,037 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:15:16,040 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:15:16,086 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 13:15:16,086 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 13:15:16,088 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 13:15:16,090 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 13:15:18,648 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-27 13:15:18,649 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-27 13:15:35,038 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 13:15:35,039 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 13:15:35,049 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:15:35,049 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:15:35,057 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 13:15:36,834 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:15:36,933 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:15:36,959 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 13:15:37,003 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 13:16:27,742 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:16:27,745 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:16:29,557 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 13:16:32,409 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 13:16:32,547 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 13:16:32,719 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(test,None))
2015-04-27 13:16:32,720 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 13:16:32,720 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 13:16:32,724 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true))
2015-04-27 13:16:32,728 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 13:16:32,733 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 13:16:34,514 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 13:16:34,707 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:60399]
2015-04-27 13:16:36,213 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 13:16:36,214 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@553d2579
2015-04-27 13:16:36,214 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@668cc9a2
2015-04-27 13:16:36,215 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3c9ef6e9)
2015-04-27 13:16:36,216 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 13:16:38,429 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 13:16:41,579 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 13:16:54,149 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 13:19:29,816 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-27 13:19:29,817 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-27 13:19:29,818 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUz8hiyfslYdGMPLt3UA
2015-04-27 13:19:29,839 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-27 13:19:30,717 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-27 13:19:30,744 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-27 13:19:37,028 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:19:38,902 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUz8hiyfslYdGMPLt3UA --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --engineInstanceId AUz8hiyfslYdGMPLt3UA --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070
2015-04-27 13:19:42,824 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-27 13:19:46,121 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 13:19:46,280 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:60505]
2015-04-27 13:19:47,295 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Using persisted model
2015-04-27 13:19:47,297 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Loaded model TextManipulationEngine.SupervisedModel for algorithm TextManipulationEngine.SupervisedAlgorithm
2015-04-27 13:19:47,309 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-3] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-04-27 13:19:47,339 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-3] - Nothing at http://0.0.0.0:8000
2015-04-27 13:19:48,131 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:8000
2015-04-27 13:19:48,133 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-4] - Bind successful. Ready to serve.
2015-04-27 13:27:45,220 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:27:45,223 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:27:45,262 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 13:27:45,263 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 13:27:45,263 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 13:27:45,264 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 13:28:21,798 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 13:28:21,799 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 13:28:21,814 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:28:21,814 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:28:21,826 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 13:28:26,347 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 13:28:26,549 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 13:28:26,583 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 13:28:26,651 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 13:28:50,235 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:28:50,238 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:28:55,280 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.AccuracyEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 13:28:59,175 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-04-27 13:28:59,770 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 13:28:59,942 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:60634]
2015-04-27 13:29:00,998 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: AUz8kZKrslYdGMPLt3UB
2015-04-27 13:29:01,010 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1fd7a37
2015-04-27 13:29:01,011 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@e700eba
2015-04-27 13:29:01,012 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@6b649efa)
2015-04-27 13:29:01,013 INFO  io.prediction.controller.Engine$ [main] - Serving: TextManipulationEngine.Serving@72543547
2015-04-27 13:29:12,750 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 13:40:41,170 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@381a687c
2015-04-27 13:40:41,171 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@29738d21
2015-04-27 13:40:41,171 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@188212c8)
2015-04-27 13:40:41,171 INFO  io.prediction.controller.Engine$ [main] - Serving: TextManipulationEngine.Serving@69d672a1
2015-04-27 13:40:41,275 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 13:47:22,186 WARN  org.apache.hadoop.hbase.client.ScannerCallable [Executor task launch worker-0] - Ignore, probably already closed
org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.UnknownScannerException): org.apache.hadoop.hbase.UnknownScannerException: Name: 47, already closed?
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2013)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31305)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

	at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1457)
	at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1661)
	at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1719)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:29990)
	at org.apache.hadoop.hbase.client.ScannerCallable.close(ScannerCallable.java:291)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:160)
	at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:59)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
	at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:90)
	at org.apache.hadoop.hbase.client.ClientScanner.close(ClientScanner.java:450)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.restart(TableRecordReaderImpl.java:88)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.nextKeyValue(TableRecordReaderImpl.java:229)
	at org.apache.hadoop.hbase.mapreduce.TableRecordReader.nextKeyValue(TableRecordReader.java:138)
	at org.apache.spark.rdd.NewHadoopRDD$$anon$1.hasNext(NewHadoopRDD.scala:143)
	at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:39)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at scala.collection.Iterator$$anon$22.hasNext(Iterator.scala:670)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at scala.collection.Iterator$$anon$14.hasNext(Iterator.scala:388)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
	at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:202)
	at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:56)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-04-27 13:50:40,468 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 13:50:40,471 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 13:50:42,411 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 3G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.AccuracyEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 13:50:46,465 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-04-27 13:50:47,047 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 13:50:47,217 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:60934]
2015-04-27 13:50:48,917 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: AUz8pYfEslYdGMPLt3UC
2015-04-27 13:50:48,924 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@603cabc4
2015-04-27 13:50:48,925 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@5974b233
2015-04-27 13:50:48,925 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@750f64fe)
2015-04-27 13:50:48,926 INFO  io.prediction.controller.Engine$ [main] - Serving: TextManipulationEngine.Serving@545b5ed0
2015-04-27 13:50:51,503 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 14:00:56,518 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@65b7df96
2015-04-27 14:00:56,519 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@728c1746
2015-04-27 14:00:56,519 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@d52cb02)
2015-04-27 14:00:56,519 INFO  io.prediction.controller.Engine$ [main] - Serving: TextManipulationEngine.Serving@3cb1c3df
2015-04-27 14:01:01,745 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 14:10:19,887 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@72efbc11
2015-04-27 14:10:19,899 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@64a3e8d1
2015-04-27 14:10:19,899 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@3d7f162f)
2015-04-27 14:10:19,899 INFO  io.prediction.controller.Engine$ [main] - Serving: TextManipulationEngine.Serving@1ff6c319
2015-04-27 14:10:20,058 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 14:25:54,672 WARN  org.apache.spark.scheduler.TaskSetManager [sparkDriver-akka.actor.default-dispatcher-3] - Stage 122 contains a task of very large size (27176 KB). The maximum recommended task size is 100 KB.
2015-04-27 14:26:18,240 WARN  org.apache.spark.scheduler.TaskSetManager [sparkDriver-akka.actor.default-dispatcher-4] - Stage 100 contains a task of very large size (27176 KB). The maximum recommended task size is 100 KB.
2015-04-27 14:27:22,795 WARN  org.apache.spark.scheduler.TaskSetManager [sparkDriver-akka.actor.default-dispatcher-16] - Stage 111 contains a task of very large size (27176 KB). The maximum recommended task size is 100 KB.
2015-04-27 17:57:54,101 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 17:57:56,214 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-27 17:57:56,215 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 17:57:56,215 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: java.net.ConnectException: Connection refused
2015-04-27 17:58:27,171 ERROR io.prediction.data.storage.elasticsearch.ESApps [main] - [predictionio_metadata][0] null
2015-04-27 17:58:48,534 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-27 17:58:48,857 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-27 17:58:48,882 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-04-27 17:58:48,882 INFO  io.prediction.tools.console.App$ [main] -       Name: marco-testapp
2015-04-27 17:58:48,882 INFO  io.prediction.tools.console.App$ [main] -         ID: 5
2015-04-27 17:58:48,883 INFO  io.prediction.tools.console.App$ [main] - Access Key: sI7hgNgKkAmT5kvhvGvy1USDhTfOdlSVSQ1OMlC9uLEjg39h2UFTmtJAFyosYg0g
2015-04-27 18:00:17,507 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 18:00:26,289 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-27 18:00:26,290 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-27 18:02:54,947 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 18:02:59,779 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-27 18:02:59,780 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-27 18:03:00,218 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:03:00,223 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:03:00,280 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 18:03:00,280 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 18:03:00,283 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 18:03:00,284 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 18:03:24,098 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 18:03:24,099 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 18:03:24,106 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:03:24,106 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:03:24,112 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 18:03:25,755 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:03:25,834 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:03:25,852 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 18:03:25,978 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 18:04:13,753 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:04:13,756 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:04:15,509 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.AccuracyEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 18:04:19,523 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-04-27 18:04:20,210 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-27 18:04:20,420 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:50885]
2015-04-27 18:06:23,057 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:06:23,062 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:06:25,267 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Evaluation: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0 --evaluation-class TextManipulationEngine.AccuracyEvaluation --engine-params-generator-class TextManipulationEngine.EngineParamsList
2015-04-27 18:06:29,033 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-04-27 18:06:29,624 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 18:06:29,790 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:50935]
2015-04-27 18:06:31,910 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: AUz9j6U5UbUH7PVDV-lq
2015-04-27 18:06:31,918 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@750f64fe
2015-04-27 18:06:31,919 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@545b5ed0
2015-04-27 18:06:31,919 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@22d7fd41)
2015-04-27 18:06:31,920 INFO  io.prediction.controller.Engine$ [main] - Serving: TextManipulationEngine.Serving@115dcaea
2015-04-27 18:06:44,294 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:06:44,491 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:12:31,823 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:12:31,828 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:12:34,136 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master recovered from org.apache.hadoop.hbase.client.ScannerTimeoutException --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:13:25,985 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:13:25,988 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:13:27,754 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:13:43,435 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:13:43,438 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:13:45,233 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:14:06,280 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:14:06,283 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:14:08,068 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:14:10,908 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:14:11,016 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:14:11,236 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:14:11,237 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:14:11,237 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:14:11,242 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:14:11,248 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:14:11,254 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:14:13,058 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-27 18:14:13,274 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51078]
2015-04-27 18:14:15,159 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 18:14:15,161 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@3c9ef6e9
2015-04-27 18:14:15,162 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@2f054f70
2015-04-27 18:14:15,163 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@59636c47)
2015-04-27 18:14:15,164 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 18:14:21,918 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 18:14:27,239 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:14:35,261 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:15:31,453 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 18:20:31,770 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-04-27 18:20:31,773 INFO  io.prediction.tools.console.App$ [main] -     App Name: marco-testapp
2015-04-27 18:20:31,773 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-27 18:20:31,774 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-27 18:20:52,120 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-27 18:20:58,198 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-27 18:20:58,337 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-27 18:20:58,620 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-27 18:20:58,722 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-27 18:21:32,232 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-27 18:21:32,317 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-27 18:21:32,328 INFO  io.prediction.tools.console.App$ [main] -        marco-testapp |    5 | sI7hgNgKkAmT5kvhvGvy1USDhTfOdlSVSQ1OMlC9uLEjg39h2UFTmtJAFyosYg0g | (all)
2015-04-27 18:21:32,337 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-27 18:21:32,337 INFO  io.prediction.tools.console.App$ [main] - Finished listing 4 app(s).
2015-04-27 18:23:30,598 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:23:30,604 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:23:30,656 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 18:23:30,656 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 18:23:30,658 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 18:23:30,660 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 18:23:47,947 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 18:23:47,948 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 18:23:47,957 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:23:47,957 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:23:47,967 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 18:23:50,201 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:23:50,285 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:23:50,305 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 18:23:50,338 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 18:24:31,448 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:24:31,451 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:24:33,229 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:24:36,230 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:24:36,333 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:24:36,540 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:24:36,541 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:24:36,542 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:24:36,546 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:24:36,553 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:24:36,559 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:24:38,376 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 18:24:38,666 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51299]
2015-04-27 18:24:40,490 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 18:24:40,491 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@3c9ef6e9
2015-04-27 18:24:40,492 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@2f054f70
2015-04-27 18:24:40,492 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@59636c47)
2015-04-27 18:24:40,492 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 18:24:57,481 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 18:24:57,789 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:25:00,613 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:25:59,495 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 18:37:27,154 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:37:27,157 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:37:27,197 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 18:37:27,197 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 18:37:27,198 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 18:37:27,199 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 18:37:43,694 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 18:37:43,694 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 18:37:43,703 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:37:43,704 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:37:43,711 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 18:37:45,835 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:37:45,917 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:37:45,937 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 18:37:45,971 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 18:37:47,126 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:37:47,129 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:37:49,044 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:37:52,047 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:37:52,155 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:37:52,395 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:37:52,395 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:37:52,396 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:37:52,400 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:37:52,407 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:37:52,409 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:38:38,004 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:38:38,007 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:38:38,047 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 18:38:38,048 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 18:38:38,049 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 18:38:38,049 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 18:38:44,889 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 18:38:44,889 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 18:38:44,897 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:38:44,898 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:38:44,907 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 18:38:46,610 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 18:38:46,692 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 18:38:46,706 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 18:38:46,735 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 18:38:47,983 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:38:47,986 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:38:49,825 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:38:52,419 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:38:52,501 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:38:52,662 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:38:52,663 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:38:52,663 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:38:52,667 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:38:52,672 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:38:52,673 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:40:13,081 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:40:13,084 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:40:14,864 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:40:17,433 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:40:17,503 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:40:17,691 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:40:17,691 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:40:17,692 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:40:17,696 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:40:17,702 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:40:17,704 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:40:19,254 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 18:40:19,423 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51525]
2015-04-27 18:40:36,729 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:40:36,733 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:40:38,626 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:40:41,670 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:40:41,747 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:40:41,940 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:40:41,941 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:40:41,942 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:40:41,948 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:40:41,956 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:40:41,958 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:40:43,584 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 18:40:43,757 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51556]
2015-04-27 18:41:32,543 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:41:32,546 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:41:34,319 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:41:36,926 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:41:37,002 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:41:37,178 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:41:37,178 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:41:37,179 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:41:37,183 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:41:37,189 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:41:37,191 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:41:38,776 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 18:41:38,947 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51591]
2015-04-27 18:41:40,406 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 18:41:40,406 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1c297897
2015-04-27 18:41:40,407 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@6274f21c
2015-04-27 18:41:40,408 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@491cafec)
2015-04-27 18:41:40,408 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 18:41:52,277 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 18:42:02,725 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:42:10,351 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:43:14,086 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 18:47:43,928 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 18:47:57,891 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:7070
2015-04-27 18:47:57,895 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-3] - Bound received. EventServer is ready.
2015-04-27 18:48:08,330 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_0 doesn't exist yet. Creating now...
2015-04-27 18:48:14,011 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_0...
2015-04-27 18:49:10,424 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-27 18:49:10,614 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-27 18:49:10,651 INFO  io.prediction.tools.console.App$ [main] -        marco-testapp |    5 | sI7hgNgKkAmT5kvhvGvy1USDhTfOdlSVSQ1OMlC9uLEjg39h2UFTmtJAFyosYg0g | (all)
2015-04-27 18:49:10,661 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-27 18:49:10,665 INFO  io.prediction.tools.console.App$ [main] - Finished listing 4 app(s).
2015-04-27 18:50:24,446 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:50:24,449 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:50:26,251 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit -master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:50:47,371 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:50:47,374 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:50:49,250 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:50:51,924 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:50:51,998 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:50:52,189 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:50:52,190 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:50:52,190 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:50:52,194 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:50:52,201 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:50:52,202 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:51:53,420 ERROR io.prediction.data.storage.elasticsearch.ESEngineInstances [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][engine_instances][AUz9uEGmSZVnpfck-oRN], source[{"id":"","status":"INIT","startTime":"2015-04-27T18:50:52.274-07:00","endTime":"2015-04-27T18:50:52.276-07:00","engineId":"0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje","engineVersion":"f8de3b2e82df59a352b216bc539994f3f1bed16d","engineVariant":"default","engineFactory":"TextManipulationEngine.TextManipulationEngine","metricsClass":"","batch":"TextManipulationEngine.TextManipulationEngine","env":{"PIO_STORAGE_SOURCES_HBASE_TYPE":"hbase","PIO_ENV_LOADED":"1","PIO_STORAGE_SOURCES_HBASE_HOSTS":"0","PIO_STORAGE_REPOSITORIES_METADATA_NAME":"predictionio_metadata","PIO_FS_BASEDIR":"/Users/Marco/.pio_store","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS":"localhost","PIO_STORAGE_SOURCES_HBASE_HOME":"/Users/Marco/PredictionIO/vendors/hbase-1.0.0","PIO_HOME":"/Users/Marco/PredictionIO","PIO_FS_ENGINESDIR":"/Users/Marco/.pio_store/engines","PIO_STORAGE_SOURCES_HBASE_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE":"elasticsearch","PIO_STORAGE_REPOSITORIES_METADATA_SOURCE":"ELASTICSEARCH","PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE":"LOCALFS","PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME":"predictionio_eventdata","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME":"/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4","PIO_FS_TMPDIR":"/Users/Marco/.pio_store/tmp","PIO_STORAGE_REPOSITORIES_MODELDATA_NAME":"pio_","PIO_STORAGE_SOURCES_LOCALFS_HOSTS":"/Users/Marco/.pio_store/models","PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE":"HBASE","PIO_CONF_DIR":"/Users/Marco/PredictionIO/conf","PIO_STORAGE_SOURCES_LOCALFS_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS":"9300","PIO_STORAGE_SOURCES_LOCALFS_TYPE":"localfs"},"sparkConf":{"spark.executor.extraClassPath":"."},"dataSourceParams":"{\"\":{\"appName\":\"marco-testapp\"}}","preparatorParams":"{\"\":{\"nMin\":1,\"nMax\":2,\"tfidf\":true,\"appName\":\"marco-testapp\"}}","algorithmsParams":"[{\"sup\":{\"lambda\":0.4}}]","servingParams":"{\"\":{}}","metricsParams":"","multipleMetricsResults":"","multipleMetricsResultsHTML":"","multipleMetricsResultsJSON":""}]}
2015-04-27 18:51:53,834 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 18:51:54,021 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51876]
2015-04-27 18:51:55,549 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 18:51:55,564 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@491cafec
2015-04-27 18:51:55,565 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@54c60202
2015-04-27 18:51:55,566 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@12952aff)
2015-04-27 18:51:55,568 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 18:52:07,532 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 18:52:12,911 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:52:15,996 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:52:45,576 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 18:52:45,579 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 18:52:47,445 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 18:52:50,052 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 18:52:50,131 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:52:50,327 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 18:52:50,328 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 18:52:50,328 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 18:52:50,333 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 18:52:50,340 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 18:52:50,342 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 18:52:52,141 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 18:52:52,333 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:51936]
2015-04-27 18:52:54,159 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 18:52:54,160 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@1c297897
2015-04-27 18:52:54,160 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@6274f21c
2015-04-27 18:52:54,162 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@491cafec)
2015-04-27 18:52:54,163 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 18:52:56,309 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 18:53:06,769 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:53:09,443 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 18:54:05,142 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 19:04:11,968 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 19:04:11,973 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 19:04:14,380 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --executor-memory 7G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 19:04:17,493 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 19:04:17,602 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 19:04:17,824 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 19:04:17,825 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 19:04:17,825 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 19:04:17,830 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 19:04:17,837 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 19:04:17,838 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 19:04:19,761 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-04-27 19:04:19,974 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52105]
2015-04-27 19:04:22,164 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 19:04:22,165 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@35cec305
2015-04-27 19:04:22,166 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@cbd40c1
2015-04-27 19:04:22,166 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@7889b4b9)
2015-04-27 19:04:22,167 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 19:04:29,059 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 19:04:29,343 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 19:04:37,405 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 19:05:41,150 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 19:14:26,003 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 19:14:30,005 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-04-27 19:14:30,006 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-04-27 19:14:32,803 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-04-27 19:14:32,805 INFO  io.prediction.tools.console.App$ [main] -     App Name: marco-testapp
2015-04-27 19:14:32,806 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-27 19:14:32,806 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-27 19:14:41,142 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-27 19:14:46,552 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-27 19:14:51,785 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-27 19:14:57,090 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-27 19:14:57,193 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-27 19:15:18,262 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-27 19:15:18,344 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-27 19:15:18,372 INFO  io.prediction.tools.console.App$ [main] -        marco-testapp |    5 | sI7hgNgKkAmT5kvhvGvy1USDhTfOdlSVSQ1OMlC9uLEjg39h2UFTmtJAFyosYg0g | (all)
2015-04-27 19:15:18,386 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-27 19:15:18,387 INFO  io.prediction.tools.console.App$ [main] - Finished listing 4 app(s).
2015-04-27 19:16:52,632 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 19:16:52,637 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 19:16:52,674 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-04-27 19:16:52,675 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-04-27 19:16:52,676 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-04-27 19:16:52,677 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-04-27 19:17:10,063 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-04-27 19:17:10,072 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-04-27 19:17:10,085 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 19:17:10,086 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 19:17:10,095 INFO  io.prediction.tools.console.Console$ [main] - HADOOP_CONF_DIR is not set. Assuming HDFS is unavailable.
2015-04-27 19:17:11,811 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-04-27 19:17:11,906 INFO  io.prediction.tools.RegisterEngine$ [main] - Copying file:/Users/Marco/TextManipulationEngine/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar to file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-04-27 19:17:11,934 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d
2015-04-27 19:17:11,984 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-04-27 19:17:13,167 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 19:17:13,170 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 19:17:15,024 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --driver-memory 2G --executor-memory 3G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 19:17:18,010 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 19:17:18,119 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 19:17:18,341 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 19:17:18,342 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 19:17:18,343 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 19:17:18,347 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 19:17:18,354 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 19:17:18,355 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 19:18:19,554 ERROR io.prediction.data.storage.elasticsearch.ESEngineInstances [main] - [predictionio_metadata][0] Primary shard is not active or isn't assigned is a known node. Timeout: [1m], request: index {[predictionio_metadata][engine_instances][AUz90HWEAc5RgXcpITQD], source[{"id":"","status":"INIT","startTime":"2015-04-27T19:17:18.428-07:00","endTime":"2015-04-27T19:17:18.430-07:00","engineId":"0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje","engineVersion":"f8de3b2e82df59a352b216bc539994f3f1bed16d","engineVariant":"default","engineFactory":"TextManipulationEngine.TextManipulationEngine","metricsClass":"","batch":"TextManipulationEngine.TextManipulationEngine","env":{"PIO_STORAGE_SOURCES_HBASE_TYPE":"hbase","PIO_ENV_LOADED":"1","PIO_STORAGE_SOURCES_HBASE_HOSTS":"0","PIO_STORAGE_REPOSITORIES_METADATA_NAME":"predictionio_metadata","PIO_FS_BASEDIR":"/Users/Marco/.pio_store","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS":"localhost","PIO_STORAGE_SOURCES_HBASE_HOME":"/Users/Marco/PredictionIO/vendors/hbase-1.0.0","PIO_HOME":"/Users/Marco/PredictionIO","PIO_FS_ENGINESDIR":"/Users/Marco/.pio_store/engines","PIO_STORAGE_SOURCES_HBASE_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE":"elasticsearch","PIO_STORAGE_REPOSITORIES_METADATA_SOURCE":"ELASTICSEARCH","PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE":"LOCALFS","PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME":"predictionio_eventdata","PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME":"/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4","PIO_FS_TMPDIR":"/Users/Marco/.pio_store/tmp","PIO_STORAGE_REPOSITORIES_MODELDATA_NAME":"pio_","PIO_STORAGE_SOURCES_LOCALFS_HOSTS":"/Users/Marco/.pio_store/models","PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE":"HBASE","PIO_CONF_DIR":"/Users/Marco/PredictionIO/conf","PIO_STORAGE_SOURCES_LOCALFS_PORTS":"0","PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS":"9300","PIO_STORAGE_SOURCES_LOCALFS_TYPE":"localfs"},"sparkConf":{"spark.executor.extraClassPath":"."},"dataSourceParams":"{\"\":{\"appName\":\"marco-testapp\"}}","preparatorParams":"{\"\":{\"nMin\":1,\"nMax\":2,\"tfidf\":true,\"appName\":\"marco-testapp\"}}","algorithmsParams":"[{\"sup\":{\"lambda\":0.4}}]","servingParams":"{\"\":{}}","metricsParams":"","multipleMetricsResults":"","multipleMetricsResultsHTML":"","multipleMetricsResultsJSON":""}]}
2015-04-27 19:18:20,153 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-04-27 19:18:20,358 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52838]
2015-04-27 19:18:22,455 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 19:18:22,456 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@491cafec
2015-04-27 19:18:22,457 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@54c60202
2015-04-27 19:18:22,458 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@12952aff)
2015-04-27 19:18:22,458 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 19:18:34,260 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 19:18:34,560 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 19:18:37,378 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 19:18:50,959 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 19:21:45,930 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-27 19:21:45,930 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-27 19:21:45,931 INFO  io.prediction.controller.Engine [main] - engineInstanceId=
2015-04-27 19:21:45,951 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-27 19:21:47,118 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-27 19:21:47,140 ERROR io.prediction.data.storage.elasticsearch.ESEngineInstances [main] - [predictionio_metadata][1] [engine_instances][]: document missing
2015-04-27 19:21:47,141 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-27 19:22:05,001 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 19:22:06,823 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUz8hiyfslYdGMPLt3UA --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --engineInstanceId AUz8hiyfslYdGMPLt3UA --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070
2015-04-27 19:22:10,712 ERROR io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Unable to extract parameters for TextManipulationEngine.PreparatorParams from JSON string: {"nMin":1,"nMax":2,"tfidf":true}. Aborting workflow.
2015-04-27 19:22:10,729 ERROR akka.actor.OneForOneStrategy [pio-server-akka.actor.default-dispatcher-2] - No usable value for appName
Did not find value which can be converted into java.lang.String
org.json4s.package$MappingException: No usable value for appName
Did not find value which can be converted into java.lang.String
	at org.json4s.reflect.package$.fail(package.scala:96)
	at org.json4s.Extraction$ClassInstanceBuilder.org$json4s$Extraction$ClassInstanceBuilder$$buildCtorArg(Extraction.scala:443)
	at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$14.apply(Extraction.scala:463)
	at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$14.apply(Extraction.scala:463)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
	at scala.collection.AbstractTraversable.map(Traversable.scala:105)
	at org.json4s.Extraction$ClassInstanceBuilder.org$json4s$Extraction$ClassInstanceBuilder$$instantiate(Extraction.scala:451)
	at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$result$6.apply(Extraction.scala:491)
	at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$result$6.apply(Extraction.scala:488)
	at org.json4s.Extraction$.org$json4s$Extraction$$customOrElse(Extraction.scala:500)
	at org.json4s.Extraction$ClassInstanceBuilder.result(Extraction.scala:488)
	at org.json4s.Extraction$.extract(Extraction.scala:332)
	at org.json4s.Extraction$.extract(Extraction.scala:56)
	at io.prediction.workflow.WorkflowUtils$.extractParams(WorkflowUtils.scala:155)
	at io.prediction.controller.Engine.engineInstanceToEngineParams(Engine.scala:414)
	at io.prediction.workflow.CreateServer$.createServerActorWithEngine(CreateServer.scala:197)
	at io.prediction.workflow.MasterActor.createServerActor(CreateServer.scala:369)
	at io.prediction.workflow.MasterActor$$anonfun$receive$2.applyOrElse(CreateServer.scala:292)
	at akka.actor.Actor$class.aroundReceive(Actor.scala:465)
	at io.prediction.workflow.MasterActor.aroundReceive(CreateServer.scala:255)
	at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)
	at akka.actor.ActorCell.invoke(ActorCell.scala:487)
	at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:238)
	at akka.dispatch.Mailbox.run(Mailbox.scala:220)
	at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: org.json4s.package$MappingException: Did not find value which can be converted into java.lang.String
	at org.json4s.reflect.package$.fail(package.scala:96)
	at org.json4s.Extraction$.convert(Extraction.scala:554)
	at org.json4s.Extraction$.extract(Extraction.scala:331)
	at org.json4s.Extraction$ClassInstanceBuilder.org$json4s$Extraction$ClassInstanceBuilder$$buildCtorArg(Extraction.scala:431)
	... 31 more
2015-04-27 19:22:38,710 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-04-27 19:22:38,713 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 19:22:40,514 INFO  io.prediction.tools.RunWorkflow$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --master spark://Marcos-MacBook-Pro.local:7077 --executor-memory 7G --class io.prediction.workflow.CreateWorkflow --name PredictionIO Training: 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d () --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --env PIO_STORAGE_SOURCES_HBASE_TYPE=hbase,PIO_ENV_LOADED=1,PIO_STORAGE_SOURCES_HBASE_HOSTS=0,PIO_STORAGE_REPOSITORIES_METADATA_NAME=predictionio_metadata,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost,PIO_STORAGE_SOURCES_HBASE_HOME=/Users/Marco/PredictionIO/vendors/hbase-1.0.0,PIO_HOME=/Users/Marco/PredictionIO,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_HBASE_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=predictionio_eventdata,PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=/Users/Marco/PredictionIO/vendors/elasticsearch-1.4.4,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_,PIO_STORAGE_SOURCES_LOCALFS_HOSTS=/Users/Marco/.pio_store/models,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE,PIO_CONF_DIR=/Users/Marco/PredictionIO/conf,PIO_STORAGE_SOURCES_LOCALFS_PORTS=0,PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300,PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs --engine-id 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje --engine-version f8de3b2e82df59a352b216bc539994f3f1bed16d --engine-variant /Users/Marco/TextManipulationEngine/engine.json --verbosity 0
2015-04-27 19:22:43,092 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-04-27 19:22:43,164 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 19:22:43,345 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(marco-testapp,None))
2015-04-27 19:22:43,345 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-04-27 19:22:43,346 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-04-27 19:22:43,350 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,true,marco-testapp))
2015-04-27 19:22:43,357 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-04-27 19:22:43,359 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-04-27 19:22:44,954 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-6] - Starting remoting
2015-04-27 19:22:45,141 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-6] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:52961]
2015-04-27 19:22:46,583 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-04-27 19:22:46,584 INFO  io.prediction.controller.Engine$ [main] - DataSource: TextManipulationEngine.DataSource@b14b60a
2015-04-27 19:22:46,585 INFO  io.prediction.controller.Engine$ [main] - Preparator: TextManipulationEngine.Preparator@33e0c716
2015-04-27 19:22:46,586 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(TextManipulationEngine.SupervisedAlgorithm@35cec305)
2015-04-27 19:22:46,587 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-04-27 19:22:48,720 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.TrainingData does not support data sanity check. Skipping check.
2015-04-27 19:22:54,099 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 19:23:01,993 WARN  org.apache.hadoop.hbase.mapreduce.TableInputFormatBase [main] - Cannot resolve the host name for /10.0.22.139 because of javax.naming.NameNotFoundException: DNS name not found [response code 3]; remaining name '139.22.0.10.in-addr.arpa'
2015-04-27 19:23:24,509 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.PreparedData does not support data sanity check. Skipping check.
2015-04-27 19:26:22,131 INFO  io.prediction.controller.Engine$ [main] - TextManipulationEngine.SupervisedModel does not support data sanity check. Skipping check.
2015-04-27 19:26:22,132 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-04-27 19:26:22,134 INFO  io.prediction.controller.Engine [main] - engineInstanceId=AUz91WsRAc5RgXcpITQE
2015-04-27 19:26:22,170 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-04-27 19:26:23,127 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-04-27 19:26:23,155 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-04-27 19:26:31,687 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-04-27 19:26:33,444 INFO  io.prediction.tools.RunServer$ [main] - Submission command: /Users/Marco/PredictionIO/vendors/spark-1.3.0/bin/spark-submit --class io.prediction.workflow.CreateServer --name PredictionIO Engine Instance: AUz91WsRAc5RgXcpITQE --jars file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/textmanipulationengine_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/.pio_store/engines/0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje/f8de3b2e82df59a352b216bc539994f3f1bed16d/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar --files /Users/Marco/PredictionIO/conf/log4j.properties,/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf/hbase-site.xml --driver-class-path /Users/Marco/PredictionIO/conf:/Users/Marco/PredictionIO/vendors/hbase-1.0.0/conf /Users/Marco/PredictionIO/lib/pio-assembly-0.9.2.jar --engineInstanceId AUz91WsRAc5RgXcpITQE --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070
2015-04-27 19:26:37,434 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to TextManipulationEngine.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-04-27 19:26:40,796 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-04-27 19:26:40,942 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.22.139:53049]
2015-04-27 19:26:41,986 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Using persisted model
2015-04-27 19:26:41,988 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Loaded model TextManipulationEngine.SupervisedModel for algorithm TextManipulationEngine.SupervisedAlgorithm
2015-04-27 19:26:41,999 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-04-27 19:26:42,028 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Nothing at http://0.0.0.0:8000
2015-04-27 19:26:43,191 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:8000
2015-04-27 19:26:43,191 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Bind successful. Ready to serve.
2015-04-27 22:52:43,411 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 22:52:54,245 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-27 22:52:54,247 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 22:52:54,247 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-27 22:56:41,026 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-27 22:56:41,136 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-27 22:56:41,154 INFO  io.prediction.tools.console.App$ [main] -        marco-testapp |    5 | sI7hgNgKkAmT5kvhvGvy1USDhTfOdlSVSQ1OMlC9uLEjg39h2UFTmtJAFyosYg0g | (all)
2015-04-27 22:56:41,164 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-27 22:56:41,166 INFO  io.prediction.tools.console.App$ [main] - Finished listing 4 app(s).
2015-04-27 22:56:58,180 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-04-27 22:56:58,182 INFO  io.prediction.tools.console.App$ [main] -     App Name: marco-testapp
2015-04-27 22:56:58,182 INFO  io.prediction.tools.console.App$ [main] -       App ID: 5
2015-04-27 22:56:58,182 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-04-27 22:57:11,986 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:12,160 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_5...
2015-04-27 22:57:12,225 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:12,477 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:12,807 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:13,237 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:13,506 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 5
2015-04-27 22:57:18,618 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:18,733 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_5 doesn't exist yet. Creating now...
2015-04-27 22:57:18,773 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:18,881 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:23,979 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 22:57:24,097 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 5.
2015-04-27 22:57:24,199 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-04-27 22:57:41,744 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-04-27 22:57:41,796 INFO  io.prediction.tools.console.App$ [main] -              TextApp |    1 | oaSc0ZogWm7MwGMIvthnJwFcDcTw1xLizpIEWmZx4K2OOOT3i1SvP5J94tEzrkFT | (all)
2015-04-27 22:57:41,808 INFO  io.prediction.tools.console.App$ [main] -        marco-testapp |    5 | sI7hgNgKkAmT5kvhvGvy1USDhTfOdlSVSQ1OMlC9uLEjg39h2UFTmtJAFyosYg0g | (all)
2015-04-27 22:57:41,816 INFO  io.prediction.tools.console.App$ [main] -                 test |    2 | 1gS08r3ZQSXbNRF07QsX7dgRv7LJMcDknFaMgYwqDl1Pb2pAhAvbz4Yp8raw0wzS | (all)
2015-04-27 22:57:41,817 INFO  io.prediction.tools.console.App$ [main] - Finished listing 4 app(s).
2015-04-27 22:59:23,696 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 22:59:25,613 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-27 22:59:25,614 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 22:59:25,615 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-27 23:00:11,098 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 23:00:11,292 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - The table predictionio_eventdata:events_0 doesn't exist yet. Creating now...
2015-04-27 23:00:11,370 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 23:00:11,498 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 23:00:21,682 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 23:00:21,918 WARN  org.apache.hadoop.hbase.HBaseConfiguration [ForkJoinPool-1-worker-5] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 23:00:21,994 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 23:00:22,116 INFO  io.prediction.data.storage.hbase.HBLEvents [main] - Removing table predictionio_eventdata:events_0...
2015-04-27 23:00:22,154 WARN  org.apache.hadoop.hbase.HBaseConfiguration [main] - Config option "hbase.regionserver.lease.period" is deprecated. Instead, use "hbase.client.scanner.timeout.period"
2015-04-27 23:01:40,495 WARN  org.apache.hadoop.hbase.client.AsyncProcess [hconnection-0x8deb645-shared--pool2-t1] - #2, table=predictionio_eventdata:events_0, attempt=1/1 failed 1 ops, last exception: org.apache.hadoop.hbase.NotServingRegionException: org.apache.hadoop.hbase.NotServingRegionException: Region predictionio_eventdata:events_0,,1430200811314.6202f5b9c8269012b0b8232235227572. is not online on 192.168.1.19,49888,1430200761132
	at org.apache.hadoop.hbase.regionserver.HRegionServer.getRegionByEncodedName(HRegionServer.java:2740)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.getRegion(RSRpcServices.java:859)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:1795)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31313)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)
 on 192.168.1.19,49888,1430200761132, tracking started Mon Apr 27 23:01:40 PDT 2015 - FAILED, NOT RETRYING ANYMORE
2015-04-27 23:03:27,139 WARN  org.apache.hadoop.hbase.client.AsyncProcess [hconnection-0x8deb645-shared--pool2-t1] - #2, table=predictionio_eventdata:events_0, attempt=1/1 failed 1 ops, last exception: org.apache.hadoop.hbase.NotServingRegionException: org.apache.hadoop.hbase.NotServingRegionException: Region predictionio_eventdata:events_0,,1430200811314.6202f5b9c8269012b0b8232235227572. is not online on 192.168.1.19,49888,1430200761132
	at org.apache.hadoop.hbase.regionserver.HRegionServer.getRegionByEncodedName(HRegionServer.java:2740)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.getRegion(RSRpcServices.java:859)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:1795)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31313)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)
 on 192.168.1.19,49888,1430200761132, tracking started Mon Apr 27 23:03:27 PDT 2015 - FAILED, NOT RETRYING ANYMORE
2015-04-27 23:03:58,296 WARN  org.apache.hadoop.hbase.client.AsyncProcess [hconnection-0x8deb645-shared--pool2-t1] - #2, table=predictionio_eventdata:events_0, attempt=1/1 failed 1 ops, last exception: org.apache.hadoop.hbase.NotServingRegionException: org.apache.hadoop.hbase.NotServingRegionException: Region predictionio_eventdata:events_0,,1430200811314.6202f5b9c8269012b0b8232235227572. is not online on 192.168.1.19,49888,1430200761132
	at org.apache.hadoop.hbase.regionserver.HRegionServer.getRegionByEncodedName(HRegionServer.java:2740)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.getRegion(RSRpcServices.java:859)
	at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:1795)
	at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31313)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)
 on 192.168.1.19,49888,1430200761132, tracking started Mon Apr 27 23:03:58 PDT 2015 - FAILED, NOT RETRYING ANYMORE
2015-04-27 23:09:11,380 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-04-27 23:09:13,281 ERROR io.prediction.data.storage.hbase.StorageClient [main] - HBase master is not running (ZooKeeper ensemble: localhost). Please make sure that HBase is running properly, and that the configuration is pointing at the correct ZooKeeper ensemble.
2015-04-27 23:09:13,282 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 23:09:13,283 ERROR io.prediction.data.storage.Storage$ [main] - com.google.protobuf.ServiceException: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
	at org.apache.hadoop.hbase.master.HMaster.checkServiceStarted(HMaster.java:1862)
	at org.apache.hadoop.hbase.master.MasterRpcServices.isMasterRunning(MasterRpcServices.java:845)
	at org.apache.hadoop.hbase.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java:42408)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2031)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
	at java.lang.Thread.run(Thread.java:745)

2015-04-27 23:53:51,071 ERROR org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper [main] - ZooKeeper exists failed after 1 attempts
2015-04-27 23:53:51,073 ERROR org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher [main] - hconnection-0x6f9ad11c, quorum=localhost:2181, baseZNode=/hbase Received unexpected KeeperException, re-throwing exception
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.storage.Storage$.verifyAllDataObjects(Storage.scala:247)
	at io.prediction.tools.console.Console$.status(Console.scala:1070)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:694)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-27 23:53:51,076 WARN  org.apache.hadoop.hbase.client.ZooKeeperRegistry [main] - Can't retrieve clusterId from Zookeeper
org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
	at org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
	at org.apache.zookeeper.ZooKeeper.exists(ZooKeeper.java:1045)
	at org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper.exists(RecoverableZooKeeper.java:199)
	at org.apache.hadoop.hbase.zookeeper.ZKUtil.checkExists(ZKUtil.java:479)
	at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:65)
	at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:83)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.retrieveClusterId(HConnectionManager.java:852)
	at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.<init>(HConnectionManager.java:657)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:409)
	at org.apache.hadoop.hbase.client.HConnectionManager.createConnection(HConnectionManager.java:388)
	at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:269)
	at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:2338)
	at io.prediction.data.storage.hbase.StorageClient.<init>(StorageClient.scala:50)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
	at io.prediction.data.storage.Storage$.getClient(Storage.scala:156)
	at io.prediction.data.storage.Storage$.io$prediction$data$storage$Storage$$updateS2CM(Storage.scala:80)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at io.prediction.data.storage.Storage$$anonfun$sourcesToClientMeta$1.apply(Storage.scala:95)
	at scala.collection.mutable.MapLike$class.getOrElseUpdate(MapLike.scala:189)
	at scala.collection.mutable.AbstractMap.getOrElseUpdate(Map.scala:91)
	at io.prediction.data.storage.Storage$.sourcesToClientMeta(Storage.scala:95)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:188)
	at io.prediction.data.storage.Storage$.getDataObject(Storage.scala:173)
	at io.prediction.data.storage.Storage$.getLEvents(Storage.scala:284)
	at io.prediction.data.storage.Storage$.verifyAllDataObjects(Storage.scala:247)
	at io.prediction.tools.console.Console$.status(Console.scala:1070)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:694)
	at io.prediction.tools.console.Console$$anonfun$main$1.apply(Console.scala:653)
	at scala.Option.map(Option.scala:145)
	at io.prediction.tools.console.Console$.main(Console.scala:653)
	at io.prediction.tools.console.Console.main(Console.scala)
2015-04-27 23:53:52,277 ERROR io.prediction.data.storage.hbase.StorageClient [main] - Cannot connect to ZooKeeper (ZooKeeper ensemble: localhost). Please make sure that the configuration is pointing at the correct ZooKeeper ensemble. By default, HBase manages its own ZooKeeper, so if you have not configured HBase to use an external ZooKeeper, that means your HBase is not started or configured properly.
2015-04-27 23:53:52,278 ERROR io.prediction.data.storage.Storage$ [main] - Error initializing storage client for source HBASE
2015-04-27 23:53:52,279 ERROR io.prediction.data.storage.Storage$ [main] - Can't connect to ZooKeeper
2015-05-04 16:45:09,793 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-05-04 16:45:09,798 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-05-04 16:45:09,848 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/sbt/sbt' at the current working directory to build.
2015-05-04 16:45:09,848 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-05-04 16:45:09,850 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.2.jar is absent.
2015-05-04 16:45:09,852 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/sbt/sbt  package assemblyPackageDependency
2015-05-04 16:59:52,946 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/TextManipulationEngine/manifest.json
2015-05-04 16:59:52,949 WARN  io.prediction.tools.console.Template$ [main] - template.json does not exist. Template metadata will not be available. (This is safe to ignore if you are not working on a template.)
2015-05-04 16:59:54,892 ERROR io.prediction.tools.console.Console$ [main] - Engine 0IXnmkEdEZLz5zywAGvkm4DeXrC1oxje f8de3b2e82df59a352b216bc539994f3f1bed16d cannot be found in the system.
2015-05-04 16:59:54,893 ERROR io.prediction.tools.console.Console$ [main] - Possible reasons:
2015-05-04 16:59:54,893 ERROR io.prediction.tools.console.Console$ [main] - - the engine is not yet built by the 'build' command;
2015-05-04 16:59:54,894 ERROR io.prediction.tools.console.Console$ [main] - - the meta data store is offline.
2015-05-26 20:23:52,472 WARN  io.prediction.tools.console.Console$ [main] - This engine project directory contains an auto-generated manifest that has been copied/moved from another location. 
2015-05-26 20:23:52,481 WARN  io.prediction.tools.console.Console$ [main] - Regenerating the manifest to reflect the updated location. This will dissociate with all previous engine instances.
2015-05-26 20:23:52,565 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-05-26 20:23:52,566 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-05-26 20:23:52,567 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-05-26 20:23:52,567 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-05-26 20:24:26,080 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-05-26 20:24:26,080 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-05-26 20:24:26,088 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-05-26 20:24:26,088 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-05-26 20:24:26,088 INFO  io.prediction.tools.console.Console$ [main] - Found TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar
2015-05-26 20:24:26,088 INFO  io.prediction.tools.console.Console$ [main] - Found textmanipulationengine_2.10-0.1-SNAPSHOT.jar
2015-05-26 20:24:26,934 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-05-26 20:24:26,972 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-05-26 20:24:35,515 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-05-26 20:24:35,521 INFO  io.prediction.tools.console.App$ [main] -        Demonstration |    1 | pJNu5GFnzZz39PgQr5Rz5G41QMTMUiM466ItGWWKpuprmd4vuW0eJupiASVB2RGU | 
2015-05-26 20:24:35,522 INFO  io.prediction.tools.console.App$ [main] - Finished listing 1 app(s).
2015-05-26 20:24:47,622 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 2.
2015-05-26 20:24:47,637 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-05-26 20:24:47,638 INFO  io.prediction.tools.console.App$ [main] -       Name: MyTextApp
2015-05-26 20:24:47,638 INFO  io.prediction.tools.console.App$ [main] -         ID: 2
2015-05-26 20:24:47,638 INFO  io.prediction.tools.console.App$ [main] - Access Key: ACrUFYuyFT8rrrXqYEjYev8blun7CU8Q890K4lT3oBtNsyp05g9FHtZatRbuipbb
2015-05-26 20:25:37,509 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-05-26 20:25:39,402 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-05-26 20:25:39,403 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-05-26 20:26:46,879 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-05-26 20:26:47,708 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-05-26 20:26:50,298 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-05-26 20:26:50,373 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-05-26 20:26:50,561 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-05-26 20:26:50,562 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-05-26 20:26:50,563 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-05-26 20:26:50,568 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-05-26 20:26:50,574 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-05-26 20:26:50,577 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-05-26 20:26:51,601 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-05-26 20:26:51,835 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@marcos-mbp:49379]
2015-05-26 20:26:52,927 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-05-26 20:26:52,928 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@57fbc06f
2015-05-26 20:26:52,928 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@7c52fc81
2015-05-26 20:26:52,929 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@766a49c7)
2015-05-26 20:26:52,930 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-05-26 20:26:54,407 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData does not support data sanity check. Skipping check.
2015-05-26 20:29:14,990 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-05-26 20:29:17,471 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-5] - Bound to /0.0.0.0:7070
2015-05-26 20:29:17,473 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-5] - Bound received. EventServer is ready.
2015-05-26 20:29:26,981 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-05-26 20:29:26,989 INFO  io.prediction.tools.console.App$ [main] -        Demonstration |    1 | pJNu5GFnzZz39PgQr5Rz5G41QMTMUiM466ItGWWKpuprmd4vuW0eJupiASVB2RGU | 
2015-05-26 20:29:26,991 INFO  io.prediction.tools.console.App$ [main] -            MyTextApp |    2 | ACrUFYuyFT8rrrXqYEjYev8blun7CU8Q890K4lT3oBtNsyp05g9FHtZatRbuipbb | 
2015-05-26 20:29:26,992 INFO  io.prediction.tools.console.App$ [main] - Finished listing 2 app(s).
2015-05-26 20:35:28,565 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-05-26 20:35:29,455 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --master spark://marcos-mbp:7077 --driver-memory 1G --executor-memory 4G --total-executor-cores 4 --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/TextManipulationEngine-assembly-0.1-SNAPSHOT-deps.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/textmanipulationengine_2.10-0.1-SNAPSHOT.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-05-26 20:35:32,081 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-05-26 20:35:32,199 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-05-26 20:35:32,487 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-05-26 20:35:32,487 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-05-26 20:35:32,488 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-05-26 20:35:32,494 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-05-26 20:35:32,501 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-05-26 20:35:32,502 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-05-26 20:35:33,629 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-05-26 20:35:33,920 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@marcos-mbp:49431]
2015-05-26 20:35:36,445 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-05-26 20:35:36,446 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@3003e580
2015-05-26 20:35:36,446 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@3c8a7e38
2015-05-26 20:35:36,447 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@30839e44)
2015-05-26 20:35:36,448 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-05-26 20:35:42,063 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData does not support data sanity check. Skipping check.
2015-06-03 13:40:42,291 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 14.
2015-06-03 13:40:42,311 INFO  io.prediction.tools.console.App$ [main] - Created new app:
2015-06-03 13:40:42,312 INFO  io.prediction.tools.console.App$ [main] -       Name: test
2015-06-03 13:40:42,312 INFO  io.prediction.tools.console.App$ [main] -         ID: 14
2015-06-03 13:40:42,313 INFO  io.prediction.tools.console.App$ [main] - Access Key: BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH
2015-06-03 14:28:08,120 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-06-03 14:28:10,232 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-06-03 14:28:10,233 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-06-03 14:28:25,577 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-06-03 14:28:25,584 INFO  io.prediction.tools.console.App$ [main] -             SpamDemo |   13 | DfRBr0T06yA4yX2B1zdI2QwqQL6zCeHp68FeRUgzQPramaQAcLfo4VAHGcKL8kc7 | 
2015-06-03 14:28:25,586 INFO  io.prediction.tools.console.App$ [main] -                 test |   14 | BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH | 
2015-06-03 14:28:25,586 INFO  io.prediction.tools.console.App$ [main] - Finished listing 2 app(s).
2015-06-03 14:33:13,541 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-03 14:33:13,543 INFO  io.prediction.tools.console.App$ [main] -     App Name: test
2015-06-03 14:33:13,543 INFO  io.prediction.tools.console.App$ [main] -       App ID: 14
2015-06-03 14:33:13,544 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-03 14:33:15,111 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 14
2015-06-03 14:33:15,118 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 14.
2015-06-03 14:33:15,120 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-04 11:30:45,679 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:30:45,749 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 11:30:45,749 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 11:30:45,750 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 11:30:45,751 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 11:31:11,817 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 11:31:11,818 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 11:31:11,826 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 11:31:11,827 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 11:31:12,542 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 11:31:12,561 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 11:31:25,593 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:31:26,540 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --stop-after-read --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 11:31:29,453 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 11:31:29,558 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:31:29,786 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-06-04 11:31:29,787 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 11:31:29,787 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:31:29,791 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-06-04 11:31:29,798 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 11:31:29,799 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 11:31:30,966 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-06-04 11:31:31,250 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:64701]
2015-06-04 11:31:32,490 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 11:31:32,491 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@eb6ec6
2015-06-04 11:31:32,491 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@727320fa
2015-06-04 11:31:32,492 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@3ce443f9)
2015-06-04 11:31:32,492 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 11:31:34,263 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 11:31:37,892 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-1] - Not enough space to cache rdd_0_3 in memory! (computed 191.8 MB so far)
2015-06-04 11:31:38,031 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-1] - Not enough space to cache rdd_1_3 in memory! (computed 96.3 MB so far)
2015-06-04 11:31:38,048 INFO  io.prediction.controller.Engine$ [main] - Stopping here because --stop-after-read is set.
2015-06-04 11:31:38,049 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training interrupted by io.prediction.workflow.StopAfterReadInterruption.
2015-06-04 11:33:42,754 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:33:42,825 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 11:33:42,825 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 11:33:42,826 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 11:33:42,827 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 11:34:19,745 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:34:19,936 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 11:34:19,937 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 11:34:19,939 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 11:34:19,948 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 11:35:44,894 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 11:35:44,895 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 11:35:44,906 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 11:35:44,906 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 11:35:48,697 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 11:35:48,730 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 11:35:54,558 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:35:58,778 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --stop-after-read --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 11:36:08,213 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 11:36:08,593 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:36:09,515 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-06-04 11:36:09,516 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 11:36:09,518 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:36:09,522 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-06-04 11:36:09,541 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 11:36:09,557 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 11:36:13,673 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-04 11:36:14,434 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:64744]
2015-06-04 11:36:18,340 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 11:36:18,341 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@eb6ec6
2015-06-04 11:36:18,342 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@727320fa
2015-06-04 11:36:18,343 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@3ce443f9)
2015-06-04 11:36:18,344 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 11:36:23,585 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 11:36:37,512 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-0] - Not enough space to cache rdd_0_3 in memory! (computed 235.2 MB so far)
2015-06-04 11:36:38,186 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-0] - Not enough space to cache rdd_1_3 in memory! (computed 36.6 MB so far)
2015-06-04 11:36:47,482 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-1] - Not enough space to cache rdd_0_3 in memory! (computed 235.2 MB so far)
2015-06-04 11:36:47,960 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-1] - Not enough space to cache rdd_1_3 in memory! (computed 36.6 MB so far)
2015-06-04 11:36:50,097 INFO  io.prediction.controller.Engine$ [main] - Stopping here because --stop-after-read is set.
2015-06-04 11:36:50,098 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training interrupted by io.prediction.workflow.StopAfterReadInterruption.
2015-06-04 11:40:48,598 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-06-04 11:40:48,604 INFO  io.prediction.tools.console.App$ [main] -            MyTextApp |   21 | erIe31WK20AnVQL3uX7D6IBvNe1S8Rj2DFRcGGvnnSdvcjTgJyO8ydufR3bmtiNv | 
2015-06-04 11:40:48,606 INFO  io.prediction.tools.console.App$ [main] -             SpamDemo |   13 | DfRBr0T06yA4yX2B1zdI2QwqQL6zCeHp68FeRUgzQPramaQAcLfo4VAHGcKL8kc7 | 
2015-06-04 11:40:48,609 INFO  io.prediction.tools.console.App$ [main] -                 test |   14 | BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH | 
2015-06-04 11:40:48,609 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-06-04 11:47:56,527 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:47:56,598 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 11:47:56,600 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 11:47:56,601 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 11:47:56,602 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 11:48:22,801 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 11:48:22,801 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 11:48:22,811 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 11:48:22,811 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 11:48:23,542 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 11:48:23,559 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 11:48:24,404 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:48:25,276 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --stop-after-prepare --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 11:48:27,803 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 11:48:27,892 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:48:28,087 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-06-04 11:48:28,087 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 11:48:28,088 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:48:28,091 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-06-04 11:48:28,096 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 11:48:28,097 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 11:48:29,116 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 11:48:29,356 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:64994]
2015-06-04 11:48:30,576 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 11:48:30,577 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@2935fd2c
2015-06-04 11:48:30,578 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@57fbc06f
2015-06-04 11:48:30,579 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@7c52fc81)
2015-06-04 11:48:30,580 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 11:48:32,244 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 11:48:45,087 ERROR org.apache.spark.executor.Executor [Executor task launch worker-1] - Exception in task 3.0 in stage 1.0 (TID 7)
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:149)
	at java.lang.StringCoding.decode(StringCoding.java:193)
	at java.lang.String.<init>(String.java:414)
	at org.postgresql.core.Encoding.decode(Encoding.java:191)
	at org.postgresql.core.Encoding.decode(Encoding.java:203)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1986)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:2575)
	at io.prediction.data.storage.jdbc.JDBCPEvents$$anonfun$find$2.apply(JDBCPEvents.scala:109)
	at io.prediction.data.storage.jdbc.JDBCPEvents$$anonfun$find$2.apply(JDBCPEvents.scala:101)
	at org.apache.spark.rdd.JdbcRDD$$anon$1.getNext(JdbcRDD.scala:93)
	at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:71)
	at org.apache.spark.storage.MemoryStore.unrollSafely(MemoryStore.scala:248)
	at org.apache.spark.CacheManager.putInBlockManager(CacheManager.scala:172)
	at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:79)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:242)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277)
	at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:70)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:242)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-06-04 11:48:45,171 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-1] - Uncaught exception in thread Thread[Executor task launch worker-1,5,main]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:149)
	at java.lang.StringCoding.decode(StringCoding.java:193)
	at java.lang.String.<init>(String.java:414)
	at org.postgresql.core.Encoding.decode(Encoding.java:191)
	at org.postgresql.core.Encoding.decode(Encoding.java:203)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1986)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:2575)
	at io.prediction.data.storage.jdbc.JDBCPEvents$$anonfun$find$2.apply(JDBCPEvents.scala:109)
	at io.prediction.data.storage.jdbc.JDBCPEvents$$anonfun$find$2.apply(JDBCPEvents.scala:101)
	at org.apache.spark.rdd.JdbcRDD$$anon$1.getNext(JdbcRDD.scala:93)
	at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:71)
	at org.apache.spark.storage.MemoryStore.unrollSafely(MemoryStore.scala:248)
	at org.apache.spark.CacheManager.putInBlockManager(CacheManager.scala:172)
	at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:79)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:242)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277)
	at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:70)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:242)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)
2015-06-04 11:48:45,175 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-3] - Lost task 3.0 in stage 1.0 (TID 7, localhost): java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.lang.StringCoding$StringDecoder.decode(StringCoding.java:149)
	at java.lang.StringCoding.decode(StringCoding.java:193)
	at java.lang.String.<init>(String.java:414)
	at org.postgresql.core.Encoding.decode(Encoding.java:191)
	at org.postgresql.core.Encoding.decode(Encoding.java:203)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:1986)
	at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString(AbstractJdbc2ResultSet.java:2575)
	at io.prediction.data.storage.jdbc.JDBCPEvents$$anonfun$find$2.apply(JDBCPEvents.scala:109)
	at io.prediction.data.storage.jdbc.JDBCPEvents$$anonfun$find$2.apply(JDBCPEvents.scala:101)
	at org.apache.spark.rdd.JdbcRDD$$anon$1.getNext(JdbcRDD.scala:93)
	at org.apache.spark.util.NextIterator.hasNext(NextIterator.scala:71)
	at org.apache.spark.storage.MemoryStore.unrollSafely(MemoryStore.scala:248)
	at org.apache.spark.CacheManager.putInBlockManager(CacheManager.scala:172)
	at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:79)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:242)
	at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:35)
	at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:277)
	at org.apache.spark.CacheManager.getOrCompute(CacheManager.scala:70)
	at org.apache.spark.rdd.RDD.iterator(RDD.scala:242)
	at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:61)
	at org.apache.spark.scheduler.Task.run(Task.scala:64)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
	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)

2015-06-04 11:48:45,177 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-3] - Task 3 in stage 1.0 failed 1 times; aborting job
2015-06-04 11:49:53,603 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:49:53,813 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 11:49:53,814 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 11:49:53,821 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 11:49:53,822 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 11:51:30,922 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:51:31,029 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 11:51:31,030 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 11:51:31,031 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 11:51:31,032 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 11:51:53,202 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/template-scala-parallel-textclassification/src/main/scala/org/template/textclassification/Preparator.scala:156: type mismatch;[0m
2015-06-04 11:51:53,202 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m found   : Int(0)[0m
2015-06-04 11:51:53,203 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m required: scala.collection.generic.CanBuildFrom[Array[org.template.textclassification.Observation],String,?][0m
2015-06-04 11:51:53,204 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m    val text = td.data.take(1).map(_.text)(0)[0m
2015-06-04 11:51:53,205 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m                                           ^[0m
2015-06-04 11:51:53,231 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mone error found[0m
2015-06-04 11:51:53,262 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(compile:[31mcompile[0m) Compilation failed[0m
2015-06-04 11:51:53,271 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 14 s, completed Jun 4, 2015 11:51:53 AM[0m
2015-06-04 11:51:53,358 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-06-04 11:55:09,703 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:55:09,771 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 11:55:09,772 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 11:55:09,774 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 11:55:09,774 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 11:55:33,749 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 11:55:33,749 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 11:55:33,757 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 11:55:33,758 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 11:55:34,697 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 11:55:34,714 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 11:55:36,151 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 11:55:37,023 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --stop-after-prepare --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 11:55:40,220 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 11:55:40,324 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:55:40,545 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-06-04 11:55:40,546 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 11:55:40,546 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 11:55:40,549 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-06-04 11:55:40,556 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 11:55:40,558 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 11:55:41,699 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-04 11:55:41,988 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:65111]
2015-06-04 11:55:43,545 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 11:55:43,546 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@2935fd2c
2015-06-04 11:55:43,547 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@57fbc06f
2015-06-04 11:55:43,547 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@7c52fc81)
2015-06-04 11:55:43,548 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 11:55:46,184 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 11:55:51,493 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-0] - Not enough space to cache rdd_0_3 in memory! (computed 199.5 MB so far)
2015-06-04 11:55:51,712 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-0] - Not enough space to cache rdd_1_3 in memory! (computed 50.8 MB so far)
2015-06-04 11:55:56,630 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-2] - Not enough space to cache rdd_0_3 in memory! (computed 199.5 MB so far)
2015-06-04 11:55:56,873 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-2] - Not enough space to cache rdd_1_3 in memory! (computed 50.8 MB so far)
2015-06-04 11:56:00,892 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-3] - Not enough space to cache rdd_0_3 in memory! (computed 199.5 MB so far)
2015-06-04 11:56:00,922 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-3] - Not enough space to cache rdd_1_3 in memory! (computed 50.8 MB so far)
2015-06-04 11:56:04,946 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-1] - Not enough space to cache rdd_0_3 in memory! (computed 199.5 MB so far)
2015-06-04 11:56:05,196 WARN  org.apache.spark.storage.MemoryStore [Executor task launch worker-1] - Not enough space to cache rdd_1_3 in memory! (computed 50.8 MB so far)
2015-06-04 12:15:49,567 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:15:49,635 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 12:15:49,636 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 12:15:49,637 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 12:15:49,638 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 12:16:09,124 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/template-scala-parallel-textclassification/src/main/scala/org/template/textclassification/Preparator.scala:43: class PreparedData needs to be abstract, since method sanityCheck in trait SanityCheck of type ()Unit is not defined[0m
2015-06-04 12:16:09,124 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mclass PreparedData ([0m
2015-06-04 12:16:09,125 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m      ^[0m
2015-06-04 12:16:09,155 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mone error found[0m
2015-06-04 12:16:09,191 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(compile:[31mcompile[0m) Compilation failed[0m
2015-06-04 12:16:09,198 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 13 s, completed Jun 4, 2015 12:16:09 PM[0m
2015-06-04 12:16:09,275 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-06-04 12:16:37,065 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:16:37,215 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 12:16:37,215 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 12:16:37,216 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 12:16:37,217 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 12:17:35,830 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:17:35,908 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 12:17:35,909 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 12:17:35,910 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 12:17:35,912 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 12:17:51,676 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 12:17:51,676 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 12:17:51,683 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 12:17:51,684 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 12:17:52,520 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 12:17:52,540 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 12:17:53,448 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:17:54,341 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --stop-after-read --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 12:17:57,309 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 12:17:57,404 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 12:17:57,639 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-06-04 12:17:57,640 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 12:17:57,641 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 12:17:57,644 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-06-04 12:17:57,650 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 12:17:57,652 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 12:17:58,822 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 12:17:59,131 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:65309]
2015-06-04 12:18:00,348 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 12:18:00,350 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@4db60246
2015-06-04 12:18:00,350 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@7d32e714
2015-06-04 12:18:00,351 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@18137eab)
2015-06-04 12:18:00,352 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 12:18:01,949 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 12:21:24,284 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:21:24,360 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 12:21:24,360 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 12:21:24,361 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 12:21:24,362 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 12:21:46,534 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 12:21:46,535 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 12:21:46,543 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 12:21:46,543 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 12:21:47,303 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 12:21:47,321 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 12:21:48,150 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:21:49,084 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --stop-after-read --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 12:21:51,681 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 12:21:51,764 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 12:21:51,961 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-06-04 12:21:51,962 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 12:21:51,962 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 12:21:51,966 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-06-04 12:21:51,972 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 12:21:51,973 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 12:21:53,010 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-04 12:21:53,267 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:65336]
2015-06-04 12:21:54,281 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 12:21:54,281 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@2935fd2c
2015-06-04 12:21:54,282 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@57fbc06f
2015-06-04 12:21:54,282 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@7c52fc81)
2015-06-04 12:21:54,283 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 12:21:56,068 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 12:21:56,258 INFO  io.prediction.controller.Engine$ [main] - Stopping here because --stop-after-read is set.
2015-06-04 12:21:56,259 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training interrupted by io.prediction.workflow.StopAfterReadInterruption.
2015-06-04 12:22:43,124 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:22:43,283 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 12:22:43,284 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 12:22:43,285 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 12:22:43,286 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 12:23:52,095 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 12:23:52,095 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 12:23:52,110 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 12:23:52,110 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 12:23:54,365 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 12:23:54,540 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 12:23:57,778 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 12:24:02,211 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --stop-after-read --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 12:24:13,413 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 12:24:14,014 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 12:24:15,364 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(5)))
2015-06-04 12:24:15,366 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 12:24:15,368 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 12:24:15,379 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.15,0.85))
2015-06-04 12:24:15,457 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 12:24:15,469 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 12:24:20,335 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-06-04 12:24:21,192 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:65362]
2015-06-04 12:24:24,863 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 12:24:24,876 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@18137eab
2015-06-04 12:24:24,877 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@3f018494
2015-06-04 12:24:24,878 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@51a18b21)
2015-06-04 12:24:24,879 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 12:24:31,441 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 12:24:31,857 INFO  io.prediction.controller.Engine$ [main] - Stopping here because --stop-after-read is set.
2015-06-04 12:24:31,858 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training interrupted by io.prediction.workflow.StopAfterReadInterruption.
2015-06-04 14:52:33,191 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 14:52:33,260 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 14:52:33,260 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 14:52:33,261 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 14:52:33,262 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 14:52:58,214 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 14:52:58,215 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 14:52:58,224 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 14:52:58,225 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 14:52:58,943 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 14:52:58,961 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 14:53:25,404 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 14:53:26,256 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --evaluation-class org.template.textclassification.AccuracyEvaluation --engine-params-generator-class org.template.textclassfication.EngineParamsList --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 14:53:43,209 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 14:53:44,073 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --evaluation-class org.template.textclassification.AccuracyEvaluation --engine-params-generator-class org.template.textclassification.EngineParamsList --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 14:53:46,994 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-06-04 14:53:47,516 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-04 14:53:47,721 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:49524]
2015-06-04 14:53:48,819 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: c41c5ff0-cd1d-42c8-a823-17c12e99de4a
2015-06-04 14:53:48,823 ERROR io.prediction.core.Doer$ [main] - org.template.textclassification.NBAlgorithmParams was used as the constructor argument to org.template.textclassification.LRAlgorithm.<init>(), but no constructor can handle it. Aborting.
2015-06-04 14:55:06,598 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 14:55:06,750 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 14:55:06,750 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 14:55:06,751 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 14:55:06,752 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 14:55:33,056 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 14:55:33,057 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 14:55:33,067 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 14:55:33,067 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 14:55:33,813 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 14:55:33,835 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 14:55:39,016 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 14:55:39,879 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --evaluation-class org.template.textclassification.AccuracyEvaluation --engine-params-generator-class org.template.textclassification.EngineParamsList --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 14:55:42,810 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-06-04 14:55:43,331 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-04 14:55:43,527 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:49548]
2015-06-04 14:55:44,598 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: 819ed113-e1f5-450d-930a-9e60c10d34b2
2015-06-04 14:55:44,606 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@56dfab87
2015-06-04 14:55:44,607 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@1e253c9d
2015-06-04 14:55:44,607 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@73844119)
2015-06-04 14:55:44,608 INFO  io.prediction.controller.Engine$ [main] - Serving: org.template.textclassification.Serving@46349b95
2015-06-04 14:56:02,817 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-06-04 14:56:02,825 INFO  io.prediction.tools.console.App$ [main] -            MyTextApp |   21 | erIe31WK20AnVQL3uX7D6IBvNe1S8Rj2DFRcGGvnnSdvcjTgJyO8ydufR3bmtiNv | 
2015-06-04 14:56:02,827 INFO  io.prediction.tools.console.App$ [main] -             SpamDemo |   13 | DfRBr0T06yA4yX2B1zdI2QwqQL6zCeHp68FeRUgzQPramaQAcLfo4VAHGcKL8kc7 | 
2015-06-04 14:56:02,829 INFO  io.prediction.tools.console.App$ [main] -                 test |   14 | BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH | 
2015-06-04 14:56:02,829 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-06-04 14:58:28,178 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 14:58:28,249 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 14:58:28,250 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 14:58:28,250 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 14:58:28,251 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 14:58:50,413 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 14:58:50,413 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 14:58:50,422 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 14:58:50,423 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 14:58:51,184 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 14:58:51,195 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 14:58:55,842 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 14:58:56,710 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --evaluation-class org.template.textclassification.AccuracyEvaluation --engine-params-generator-class org.template.textclassification.EngineParamsList --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 14:58:59,646 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-06-04 14:59:00,194 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 14:59:00,403 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:49582]
2015-06-04 14:59:01,513 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: 452fe866-58b8-4a2f-8fb2-c09c98a2b54c
2015-06-04 14:59:01,520 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@56dfab87
2015-06-04 14:59:01,521 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@1e253c9d
2015-06-04 14:59:01,521 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@73844119)
2015-06-04 14:59:01,522 INFO  io.prediction.controller.Engine$ [main] - Serving: org.template.textclassification.Serving@46349b95
2015-06-04 15:00:48,818 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 15:00:49,964 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --evaluation-class org.template.textclassification.AccuracyEvaluation --engine-params-generator-class org.template.textclassification.EngineParamsList --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 15:00:53,519 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-06-04 15:00:54,221 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-06-04 15:00:54,471 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:49619]
2015-06-04 15:00:56,118 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: 219a2d4a-7db6-4b4f-be05-783aaa5d09ee
2015-06-04 15:00:56,123 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@437486cd
2015-06-04 15:00:56,124 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@317a118b
2015-06-04 15:00:56,124 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@7fb29ca9)
2015-06-04 15:00:56,125 INFO  io.prediction.controller.Engine$ [main] - Serving: org.template.textclassification.Serving@18b8d173
2015-06-04 15:01:44,690 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 15:01:45,508 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --evaluation-class org.template.textclassification.AccuracyEvaluation --engine-params-generator-class org.template.textclassification.EngineParamsList --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 15:01:48,568 INFO  io.prediction.workflow.CoreWorkflow$ [main] - runEvaluation started
2015-06-04 15:01:49,079 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 15:01:49,271 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:49643]
2015-06-04 15:01:50,377 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Starting evaluation instance ID: abeb291d-3f7c-4e94-bbbb-5f86a0b39c71
2015-06-04 15:01:50,384 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@73844119
2015-06-04 15:01:50,384 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@46349b95
2015-06-04 15:01:50,385 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@1687eb01)
2015-06-04 15:01:50,386 INFO  io.prediction.controller.Engine$ [main] - Serving: org.template.textclassification.Serving@d5d5353
2015-06-04 15:04:28,023 ERROR org.apache.spark.executor.Executor [Executor task launch worker-4] - Exception in task 1.0 in stage 11.0 (TID 41)
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:328)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap.updated(HashMap.scala:54)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
2015-06-04 15:04:28,044 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-4] - Uncaught exception in thread Thread[Executor task launch worker-4,5,main]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:328)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap.updated(HashMap.scala:54)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
2015-06-04 15:04:28,046 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 1.0 in stage 11.0 (TID 41, localhost): java.lang.OutOfMemoryError: GC overhead limit exceeded
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:328)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap.updated(HashMap.scala:54)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)

2015-06-04 15:04:28,048 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Task 1 in stage 11.0 failed 1 times; aborting job
2015-06-04 16:00:52,681 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-06-04 16:00:52,687 INFO  io.prediction.tools.console.App$ [main] -            MyTextApp |   21 | erIe31WK20AnVQL3uX7D6IBvNe1S8Rj2DFRcGGvnnSdvcjTgJyO8ydufR3bmtiNv | 
2015-06-04 16:00:52,689 INFO  io.prediction.tools.console.App$ [main] -             SpamDemo |   13 | DfRBr0T06yA4yX2B1zdI2QwqQL6zCeHp68FeRUgzQPramaQAcLfo4VAHGcKL8kc7 | 
2015-06-04 16:00:52,691 INFO  io.prediction.tools.console.App$ [main] -                 test |   14 | BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH | 
2015-06-04 16:00:52,692 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-06-04 16:04:16,198 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 16:04:16,273 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 16:04:16,273 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 16:04:16,274 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 16:04:16,275 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 16:04:43,446 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 16:04:43,447 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 16:04:43,456 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 16:04:43,456 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 16:04:44,198 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 16:04:44,218 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 16:04:52,745 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 16:04:54,530 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 16:04:58,754 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 16:04:58,871 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 16:04:59,124 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-04 16:04:59,125 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 16:04:59,125 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 16:04:59,129 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-04 16:04:59,134 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 16:04:59,136 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 16:05:00,235 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 16:05:00,433 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50225]
2015-06-04 16:05:01,515 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 16:05:01,516 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@3ce443f9
2015-06-04 16:05:01,516 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@62b790a5
2015-06-04 16:05:01,517 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@2806d6da)
2015-06-04 16:05:01,517 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 16:05:02,654 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 16:07:05,090 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-04 16:07:31,115 ERROR org.apache.spark.executor.Executor [Executor task launch worker-6] - Exception in task 0.0 in stage 10.0 (TID 37)
java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-04 16:07:31,974 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-6] - Uncaught exception in thread Thread[Executor task launch worker-6,5,main]
java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-04 16:07:31,979 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-1] - Lost task 0.0 in stage 10.0 (TID 37, localhost): java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

2015-06-04 16:07:31,981 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-1] - Task 0 in stage 10.0 failed 1 times; aborting job
2015-06-04 16:11:59,023 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-04 16:11:59,025 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyTextApp
2015-06-04 16:11:59,025 INFO  io.prediction.tools.console.App$ [main] -       App ID: 21
2015-06-04 16:11:59,026 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-04 16:12:01,245 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 21
2015-06-04 16:12:01,252 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 21.
2015-06-04 16:12:01,253 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-04 16:12:05,507 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-06-04 16:12:05,513 INFO  io.prediction.tools.console.App$ [main] -            MyTextApp |   21 | erIe31WK20AnVQL3uX7D6IBvNe1S8Rj2DFRcGGvnnSdvcjTgJyO8ydufR3bmtiNv | 
2015-06-04 16:12:05,515 INFO  io.prediction.tools.console.App$ [main] -             SpamDemo |   13 | DfRBr0T06yA4yX2B1zdI2QwqQL6zCeHp68FeRUgzQPramaQAcLfo4VAHGcKL8kc7 | 
2015-06-04 16:12:05,517 INFO  io.prediction.tools.console.App$ [main] -                 test |   14 | BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH | 
2015-06-04 16:12:05,518 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-06-04 16:15:55,006 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/spamData/emails.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 16:15:58,031 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-04 16:15:58,210 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50286]
2015-06-04 16:16:03,604 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-04 16:16:03,605 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-04 16:16:08,408 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 16:16:09,239 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 16:16:11,729 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 16:16:11,816 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 16:16:12,017 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-04 16:16:12,018 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 16:16:12,018 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 16:16:12,022 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-04 16:16:12,028 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 16:16:12,029 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 16:16:13,037 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 16:16:13,293 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50296]
2015-06-04 16:16:14,292 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 16:16:14,293 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@3ce443f9
2015-06-04 16:16:14,294 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@62b790a5
2015-06-04 16:16:14,294 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@2806d6da)
2015-06-04 16:16:14,295 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 16:16:15,455 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 16:17:48,520 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-04 16:18:14,940 ERROR org.apache.spark.executor.Executor [Executor task launch worker-4] - Exception in task 1.0 in stage 10.0 (TID 38)
java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-04 16:18:15,766 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-4] - Uncaught exception in thread Thread[Executor task launch worker-4,5,main]
java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-04 16:18:15,769 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Lost task 1.0 in stage 10.0 (TID 38, localhost): java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

2015-06-04 16:18:15,772 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-2] - Task 1 in stage 10.0 failed 1 times; aborting job
2015-06-04 16:19:22,437 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 16:19:23,593 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 16:19:26,660 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 16:19:26,774 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 16:19:27,008 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-04 16:19:27,009 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 16:19:27,009 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 16:19:27,012 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-04 16:19:27,020 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 16:19:27,022 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 16:19:28,228 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-04 16:19:28,539 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50315]
2015-06-04 16:19:30,068 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 16:19:30,069 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@51a18b21
2015-06-04 16:19:30,069 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@7523a3dc
2015-06-04 16:19:30,070 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@1db7157f)
2015-06-04 16:19:30,070 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 16:19:31,253 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 16:21:52,456 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-04 16:23:57,542 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
2015-06-04 16:23:57,543 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
2015-06-04 16:24:03,968 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-04 16:24:04,040 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-04 16:24:11,409 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:24:11,441 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-04 16:24:16,800 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:24:16,835 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-04 16:24:30,804 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300465 fval: 0.07905322216581356 rhs: 0.14226911184209526 cdd: -0.006620593534485615
2015-06-04 16:24:30,821 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-04 16:24:30,927 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-04 16:24:38,675 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:24:38,744 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-04 16:24:47,791 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:24:47,822 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-04 16:24:56,056 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:24:56,086 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-04 16:25:02,011 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:25:02,080 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-04 16:25:14,305 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993816 fval: 0.06311494181031824 rhs: 0.0645005396124088 cdd: -6.850664848266749E-4
2015-06-04 16:25:14,318 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-04 16:25:14,350 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-04 16:25:23,075 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:25:23,106 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-04 16:25:30,012 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:25:30,045 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-04 16:25:37,159 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:25:37,191 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-04 16:25:45,442 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:25:45,474 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-04 16:25:52,379 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:25:52,414 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-04 16:25:58,822 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:25:58,854 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-04 16:28:07,568 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-04 16:28:07,599 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-04 16:28:12,556 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:28:12,587 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-04 16:28:17,844 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:28:17,878 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-04 16:28:28,165 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300471 fval: 0.07905322216581365 rhs: 0.14226911184209523 cdd: -0.006620593534487217
2015-06-04 16:28:28,182 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-04 16:28:28,269 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-04 16:28:33,546 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:28:33,585 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-04 16:28:41,256 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:28:41,287 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-04 16:28:46,809 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:28:46,839 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-04 16:28:52,693 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:28:52,727 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-04 16:29:02,803 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993805 fval: 0.06311494181031818 rhs: 0.06450053961240876 cdd: -6.850664848265972E-4
2015-06-04 16:29:02,817 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-04 16:29:02,852 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-04 16:29:11,089 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:29:11,168 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-04 16:29:17,677 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:29:17,734 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-04 16:29:24,223 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:29:24,254 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-04 16:29:32,540 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:29:32,595 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-04 16:29:39,735 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:29:39,766 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-04 16:29:46,143 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 16:29:46,174 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-04 16:29:46,238 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.LRModel does not support data sanity check. Skipping check.
2015-06-04 16:29:46,238 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-06-04 16:29:46,239 INFO  io.prediction.controller.Engine [main] - engineInstanceId=f1a543c8-7fc4-49c0-b5ba-5b8510b9cbc4
2015-06-04 16:29:46,270 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-06-04 16:29:49,720 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-06-04 16:29:49,735 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-06-04 16:35:56,096 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateServer --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engineInstanceId f1a543c8-7fc4-49c0-b5ba-5b8510b9cbc4 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 16:35:59,137 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to org.template.textclassification.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-06-04 16:36:02,072 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-06-04 16:36:02,237 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50407]
2015-06-04 16:36:03,264 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Using persisted model
2015-06-04 16:36:03,266 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Loaded model org.template.textclassification.LRModel for algorithm org.template.textclassification.LRAlgorithm
2015-06-04 16:36:03,281 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-06-04 16:36:03,324 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-5] - Nothing at http://0.0.0.0:8000
2015-06-04 16:36:04,701 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:8000
2015-06-04 16:36:04,702 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-3] - Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
2015-06-04 16:37:18,250 ERROR io.prediction.workflow.ServerActor [pio-server-akka.actor.default-dispatcher-4] - Query:
{"text":"}

Stack Trace:
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 11
	at com.google.gson.Gson.fromJson(Gson.java:818)
	at com.google.gson.Gson.fromJson(Gson.java:768)
	at com.google.gson.Gson.fromJson(Gson.java:717)
	at com.google.gson.Gson.fromJson(Gson.java:689)
	at io.prediction.workflow.JsonExtractor$.extractWithGson(JsonExtractor.scala:152)
	at io.prediction.workflow.JsonExtractor$.extract(JsonExtractor.scala:70)
	at io.prediction.workflow.ServerActor$$anonfun$24.apply(CreateServer.scala:499)
	at io.prediction.workflow.ServerActor$$anonfun$24.apply(CreateServer.scala:493)
	at spray.routing.ApplyConverterInstances$$anon$22$$anonfun$apply$1.apply(ApplyConverterInstances.scala:25)
	at spray.routing.ApplyConverterInstances$$anon$22$$anonfun$apply$1.apply(ApplyConverterInstances.scala:24)
	at spray.routing.ConjunctionMagnet$$anon$1$$anon$2$$anonfun$happly$1$$anonfun$apply$1.apply(Directive.scala:38)
	at spray.routing.ConjunctionMagnet$$anon$1$$anon$2$$anonfun$happly$1$$anonfun$apply$1.apply(Directive.scala:37)
	at spray.routing.directives.BasicDirectives$$anon$1.happly(BasicDirectives.scala:26)
	at spray.routing.ConjunctionMagnet$$anon$1$$anon$2$$anonfun$happly$1.apply(Directive.scala:37)
	at spray.routing.ConjunctionMagnet$$anon$1$$anon$2$$anonfun$happly$1.apply(Directive.scala:36)
	at spray.routing.directives.BasicDirectives$$anon$2.happly(BasicDirectives.scala:79)
	at spray.routing.Directive$$anon$7$$anonfun$happly$4.apply(Directive.scala:86)
	at spray.routing.Directive$$anon$7$$anonfun$happly$4.apply(Directive.scala:86)
	at spray.routing.directives.BasicDirectives$$anon$3$$anonfun$happly$1.apply(BasicDirectives.scala:92)
	at spray.routing.directives.BasicDirectives$$anon$3$$anonfun$happly$1.apply(BasicDirectives.scala:92)
	at spray.routing.directives.ExecutionDirectives$$anonfun$detach$1$$anonfun$apply$7$$anonfun$apply$3.apply$mcV$sp(ExecutionDirectives.scala:89)
	at spray.routing.directives.ExecutionDirectives$$anonfun$detach$1$$anonfun$apply$7$$anonfun$apply$3.apply(ExecutionDirectives.scala:89)
	at spray.routing.directives.ExecutionDirectives$$anonfun$detach$1$$anonfun$apply$7$$anonfun$apply$3.apply(ExecutionDirectives.scala:89)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
	at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
	at scala.concurrent.impl.ExecutionContextImpl$$anon$3.exec(ExecutionContextImpl.scala:107)
	at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
	at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
	at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
	at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated string at line 1 column 11
	at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)
	at com.google.gson.stream.JsonReader.nextQuotedValue(JsonReader.java:1006)
	at com.google.gson.stream.JsonReader.nextString(JsonReader.java:811)
	at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:358)
	at com.google.gson.internal.bind.TypeAdapters$13.read(TypeAdapters.java:346)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172)
	at com.google.gson.Gson.fromJson(Gson.java:803)
	... 29 more



2015-06-04 17:49:30,240 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 17:49:30,304 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 17:49:30,305 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 17:49:30,306 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 17:49:30,307 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 17:51:17,027 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 17:51:17,127 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-04 17:51:17,127 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-04 17:51:17,128 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-04 17:51:17,129 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-04 17:51:40,611 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-04 17:51:40,611 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-04 17:51:40,620 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-04 17:51:40,621 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-04 17:51:41,572 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-04 17:51:41,589 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-04 17:52:06,907 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-04 17:52:07,761 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 17:52:10,719 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-04 17:52:10,819 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 17:52:11,039 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-04 17:52:11,040 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-04 17:52:11,040 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-04 17:52:11,044 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-04 17:52:11,051 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-04 17:52:11,053 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-04 17:52:12,209 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 17:52:12,486 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:51018]
2015-06-04 17:52:14,023 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-04 17:52:14,024 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@3ce443f9
2015-06-04 17:52:14,025 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@62b790a5
2015-06-04 17:52:14,026 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@2806d6da)
2015-06-04 17:52:14,026 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-04 17:52:15,313 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-04 17:53:52,286 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-04 17:56:03,331 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
2015-06-04 17:56:03,331 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
2015-06-04 17:56:09,470 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-04 17:56:09,531 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-04 17:56:15,542 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:56:15,581 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-04 17:56:22,389 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:56:22,439 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-04 17:56:34,445 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300465 fval: 0.07905322216581356 rhs: 0.14226911184209526 cdd: -0.006620593534485615
2015-06-04 17:56:34,459 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-04 17:56:34,531 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-04 17:56:40,065 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:56:40,097 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-04 17:56:45,762 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:56:45,794 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-04 17:56:52,059 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:56:52,095 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-04 17:57:00,206 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:57:00,237 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-04 17:57:11,292 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993816 fval: 0.06311494181031824 rhs: 0.0645005396124088 cdd: -6.850664848266749E-4
2015-06-04 17:57:11,304 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-04 17:57:11,337 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-04 17:57:20,164 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:57:20,195 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-04 17:57:27,580 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:57:27,625 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-04 17:57:35,514 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:57:35,553 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-04 17:57:44,604 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:57:44,636 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-04 17:57:52,720 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:57:52,753 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-04 17:58:00,359 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 17:58:00,416 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-04 18:00:16,765 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-04 18:00:16,800 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-04 18:00:22,357 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:00:22,390 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-04 18:00:27,549 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:00:27,581 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-04 18:00:38,119 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300471 fval: 0.07905322216581365 rhs: 0.14226911184209523 cdd: -0.006620593534487217
2015-06-04 18:00:38,132 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-04 18:00:38,168 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-04 18:00:43,260 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:00:43,293 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-04 18:00:51,770 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:00:51,850 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-04 18:00:58,154 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:00:58,184 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-04 18:01:03,800 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:01:03,831 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-04 18:01:18,341 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993805 fval: 0.06311494181031818 rhs: 0.06450053961240876 cdd: -6.850664848265972E-4
2015-06-04 18:01:18,353 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-04 18:01:18,399 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-04 18:01:25,327 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:01:25,359 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-04 18:01:31,497 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:01:31,535 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-04 18:01:40,174 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:01:40,225 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-04 18:01:47,154 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:01:47,190 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-04 18:01:53,902 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:01:53,935 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-04 18:02:02,070 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-04 18:02:02,101 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-04 18:02:02,157 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.LRModel does not support data sanity check. Skipping check.
2015-06-04 18:02:02,157 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-06-04 18:02:02,158 INFO  io.prediction.controller.Engine [main] - engineInstanceId=a8a39cbf-5d8c-4c9d-a843-4e041cbcaef2
2015-06-04 18:02:02,188 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-06-04 18:02:05,617 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-06-04 18:02:05,630 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-06-04 18:04:22,135 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateServer --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engineInstanceId a8a39cbf-5d8c-4c9d-a843-4e041cbcaef2 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-04 18:04:25,286 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to org.template.textclassification.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-06-04 18:04:28,001 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-04 18:04:28,149 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:51156]
2015-06-04 18:04:29,215 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Using persisted model
2015-06-04 18:04:29,217 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Loaded model org.template.textclassification.LRModel for algorithm org.template.textclassification.LRAlgorithm
2015-06-04 18:04:29,234 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-3] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-06-04 18:04:29,259 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-3] - Nothing at http://0.0.0.0:8000
2015-06-04 18:04:30,646 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:8000
2015-06-04 18:04:30,647 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
2015-06-05 10:10:51,449 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-05 10:10:51,532 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-05 10:10:51,533 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-05 10:10:51,534 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-05 10:10:51,534 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-05 10:12:29,910 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-05 10:12:29,912 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-05 10:12:29,929 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-05 10:12:29,930 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-05 10:12:31,725 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-05 10:12:31,750 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-05 10:13:14,255 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-05 10:13:15,376 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-05 10:13:18,265 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-05 10:13:18,378 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-05 10:13:18,603 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-05 10:13:18,603 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-05 10:13:18,604 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-05 10:13:18,607 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-05 10:13:18,613 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-05 10:13:18,615 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-05 10:13:19,746 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-05 10:13:20,044 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.3:54376]
2015-06-05 10:13:21,583 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-05 10:13:21,583 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@3ce443f9
2015-06-05 10:13:21,584 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@62b790a5
2015-06-05 10:13:21,585 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@2806d6da)
2015-06-05 10:13:21,585 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-05 10:13:22,780 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-05 10:15:34,630 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-05 10:15:35,722 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --executor-memory 4G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-05 10:15:38,661 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-05 10:15:38,772 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-05 10:15:39,001 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-05 10:15:39,001 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-05 10:15:39,002 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-05 10:15:39,006 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-05 10:15:39,013 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-05 10:15:39,015 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-05 10:15:40,190 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-05 10:15:40,479 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.3:54395]
2015-06-05 10:15:41,963 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-05 10:15:41,963 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@51a18b21
2015-06-05 10:15:41,964 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@7523a3dc
2015-06-05 10:15:41,965 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@1db7157f)
2015-06-05 10:15:41,966 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-05 10:15:43,075 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-05 10:17:12,452 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-05 10:19:06,610 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
2015-06-05 10:19:06,611 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
2015-06-05 10:19:12,111 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-05 10:19:12,189 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-05 10:19:17,399 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:19:17,429 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-05 10:19:22,570 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:19:22,604 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-05 10:19:32,284 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300465 fval: 0.07905322216581356 rhs: 0.14226911184209526 cdd: -0.006620593534485615
2015-06-05 10:19:32,341 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-05 10:19:32,384 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-05 10:19:37,431 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:19:37,516 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-05 10:19:42,327 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:19:42,763 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-05 10:19:50,435 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:19:50,466 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-05 10:19:56,404 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:19:56,436 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-05 10:20:08,076 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993816 fval: 0.06311494181031824 rhs: 0.0645005396124088 cdd: -6.850664848266749E-4
2015-06-05 10:20:08,092 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-05 10:20:08,175 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-05 10:20:13,768 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:20:13,799 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-05 10:20:24,003 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:20:24,038 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-05 10:20:32,419 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:20:32,450 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-05 10:20:40,045 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:20:40,131 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-05 10:20:52,309 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:20:52,357 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-05 10:21:00,239 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:00,744 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-05 10:21:08,123 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:08,163 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621117 (rel: 6.90e-05) 0.00292494
2015-06-05 10:21:16,087 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:16,125 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621113 (rel: 7.79e-06) 0.00143876
2015-06-05 10:21:23,887 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:23,923 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621109 (rel: 5.72e-06) 0.000793140
2015-06-05 10:21:32,467 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:32,499 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 2.25e-06) 0.000404889
2015-06-05 10:21:39,136 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:39,172 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 1.59e-07) 0.000356804
2015-06-05 10:21:47,440 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:47,472 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.65e-07) 9.52480e-05
2015-06-05 10:21:54,142 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:21:54,193 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.45e-08) 4.18003e-05
2015-06-05 10:23:54,500 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-05 10:23:54,586 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-05 10:23:59,269 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:23:59,300 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-05 10:24:04,537 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:24:04,616 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-05 10:24:13,816 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300471 fval: 0.07905322216581365 rhs: 0.14226911184209523 cdd: -0.006620593534487217
2015-06-05 10:24:13,830 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-05 10:24:13,864 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-05 10:24:18,972 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:24:19,004 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-05 10:24:26,537 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:24:26,568 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-05 10:24:31,894 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:24:31,923 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-05 10:24:36,855 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:24:36,886 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-05 10:24:50,101 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993805 fval: 0.06311494181031818 rhs: 0.06450053961240876 cdd: -6.850664848265972E-4
2015-06-05 10:24:50,113 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-05 10:24:50,149 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-05 10:24:58,241 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:24:58,272 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-05 10:25:04,629 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:04,681 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-05 10:25:13,157 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:13,188 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-05 10:25:20,274 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:20,320 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-05 10:25:26,209 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:26,240 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-05 10:25:33,972 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:34,021 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-05 10:25:40,488 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:40,520 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621117 (rel: 6.90e-05) 0.00292494
2015-06-05 10:25:48,415 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:48,446 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621113 (rel: 7.79e-06) 0.00143876
2015-06-05 10:25:55,004 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:25:55,036 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621109 (rel: 5.72e-06) 0.000793140
2015-06-05 10:26:00,811 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:26:00,845 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 2.25e-06) 0.000404889
2015-06-05 10:26:06,337 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:26:06,372 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 1.59e-07) 0.000356804
2015-06-05 10:26:14,444 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:26:14,476 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.65e-07) 9.52480e-05
2015-06-05 10:26:20,871 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-05 10:26:20,903 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.45e-08) 4.18003e-05
2015-06-05 10:26:20,953 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.LRModel does not support data sanity check. Skipping check.
2015-06-05 10:26:20,953 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-06-05 10:26:20,954 INFO  io.prediction.controller.Engine [main] - engineInstanceId=118bb051-4b63-48b5-a1d9-ea52ed3def5b
2015-06-05 10:26:20,979 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-06-05 10:26:24,354 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-06-05 10:26:24,361 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-06-05 11:27:34,935 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateServer --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engineInstanceId 118bb051-4b63-48b5-a1d9-ea52ed3def5b --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-05 11:27:38,063 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to org.template.textclassification.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-06-05 11:27:41,425 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-05 11:27:41,625 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.3:54543]
2015-06-05 11:27:42,886 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Using persisted model
2015-06-05 11:27:42,888 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Loaded model org.template.textclassification.LRModel for algorithm org.template.textclassification.LRAlgorithm
2015-06-05 11:27:42,911 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-06-05 11:27:42,973 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Nothing at http://0.0.0.0:8000
2015-06-05 11:27:44,561 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-4] - Bound to /0.0.0.0:8000
2015-06-05 11:27:44,563 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-3] - Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
2015-06-08 09:14:02,563 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:14:02,659 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 09:14:02,659 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 09:14:02,660 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 09:14:02,661 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 09:14:25,918 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m/Users/Marco/template-scala-parallel-textclassification/src/main/scala/org/template/textclassification/Preparator.scala:79: type mismatch;[0m
2015-06-08 09:14:25,918 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m found   : scala.collection.immutable.Map[String,Double][0m
2015-06-08 09:14:25,918 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m required: scala.collection.immutable.HashMap[String,Double][0m
2015-06-08 09:14:25,921 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m    map.mapValues(e => e / map.values.sum)[0m
2015-06-08 09:14:25,923 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m                 ^[0m
2015-06-08 09:14:26,037 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mone error found[0m
2015-06-08 09:14:26,070 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0m(compile:[31mcompile[0m) Compilation failed[0m
2015-06-08 09:14:26,076 ERROR io.prediction.tools.console.Console$ [Thread-2] - [0m[[31merror[0m] [0mTotal time: 13 s, completed Jun 8, 2015 9:14:26 AM[0m
2015-06-08 09:14:26,155 ERROR io.prediction.tools.console.Console$ [main] - Return code of previous step is 1. Aborting.
2015-06-08 09:19:25,954 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:19:26,020 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 09:19:26,020 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 09:19:26,021 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 09:19:26,022 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 09:19:53,662 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 09:19:53,663 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 09:19:53,671 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 09:19:53,671 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 09:20:46,284 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:20:46,356 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 09:20:46,356 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 09:20:46,357 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 09:20:46,358 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 09:20:53,522 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 09:20:53,523 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 09:20:53,544 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 09:20:53,544 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 09:20:54,576 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 09:20:54,614 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 09:21:05,994 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:21:06,866 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 09:21:09,800 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-08 09:21:09,902 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:21:10,120 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-08 09:21:10,121 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-08 09:21:10,121 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:21:10,125 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-08 09:21:10,131 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-08 09:21:10,133 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-08 09:21:11,311 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-06-08 09:21:11,602 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:49986]
2015-06-08 09:21:13,189 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-08 09:21:13,190 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@51a18b21
2015-06-08 09:21:13,190 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@7523a3dc
2015-06-08 09:21:13,191 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@1db7157f)
2015-06-08 09:21:13,191 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-08 09:21:14,499 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-08 09:21:39,561 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-08 09:24:33,190 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:24:33,258 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 09:24:33,259 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 09:24:33,261 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 09:24:33,262 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 09:25:13,687 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 09:25:13,688 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 09:25:13,700 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 09:25:13,701 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 09:25:15,720 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 09:25:15,783 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 09:25:28,789 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:25:30,863 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 09:25:37,316 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-08 09:25:37,546 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:25:38,091 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-08 09:25:38,094 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-08 09:25:38,096 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:25:38,128 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-08 09:25:38,151 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-08 09:25:38,154 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-08 09:25:41,272 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-08 09:25:41,853 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50027]
2015-06-08 09:25:44,424 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-08 09:25:44,426 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@4db60246
2015-06-08 09:25:44,427 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@7d32e714
2015-06-08 09:25:44,427 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@18137eab)
2015-06-08 09:25:44,429 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-08 09:25:46,665 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-08 09:26:15,328 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-08 09:26:41,451 ERROR org.apache.spark.executor.Executor [Executor task launch worker-2] - Exception in task 1.0 in stage 10.0 (TID 38)
java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-08 09:26:42,492 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-2] - Uncaught exception in thread Thread[Executor task launch worker-2,5,main]
java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-08 09:26:42,501 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Lost task 1.0 in stage 10.0 (TID 38, localhost): java.lang.OutOfMemoryError: Java heap space
	at java.io.ObjectInputStream$HandleTable.grow(ObjectInputStream.java:3469)
	at java.io.ObjectInputStream$HandleTable.assign(ObjectInputStream.java:3275)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1650)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)

2015-06-08 09:26:42,509 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-0] - Task 1 in stage 10.0 failed 1 times; aborting job
2015-06-08 09:27:06,943 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:27:07,785 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --executor-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 09:27:10,229 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-08 09:27:10,318 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:27:10,509 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-08 09:27:10,510 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-08 09:27:10,510 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:27:10,514 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-08 09:27:10,520 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-08 09:27:10,521 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-08 09:27:11,531 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-08 09:27:11,770 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50088]
2015-06-08 09:27:12,837 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-08 09:27:12,838 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@51a18b21
2015-06-08 09:27:12,839 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@7523a3dc
2015-06-08 09:27:12,839 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.LRAlgorithm@1db7157f)
2015-06-08 09:27:12,840 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-08 09:27:14,002 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-08 09:27:32,345 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-08 09:28:22,717 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
2015-06-08 09:28:22,718 WARN  com.github.fommil.netlib.BLAS [dag-scheduler-event-loop] - Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
2015-06-08 09:28:28,799 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-08 09:28:28,834 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-08 09:28:34,307 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:28:34,344 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-08 09:28:39,503 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:28:39,536 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-08 09:28:52,785 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300465 fval: 0.07905322216581356 rhs: 0.14226911184209526 cdd: -0.006620593534485615
2015-06-08 09:28:52,800 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-08 09:28:52,838 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-08 09:28:58,223 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:28:58,255 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-08 09:29:03,609 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:29:03,643 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-08 09:29:14,243 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:29:14,287 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-08 09:29:24,579 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:29:24,640 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-08 09:29:46,651 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993816 fval: 0.06311494181031824 rhs: 0.0645005396124088 cdd: -6.850664848266749E-4
2015-06-08 09:29:46,680 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-08 09:29:46,746 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-08 09:29:56,496 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:29:56,557 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-08 09:30:08,817 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:30:08,901 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-08 09:30:22,164 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:30:22,212 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-08 09:30:31,808 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:30:32,498 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-08 09:30:40,608 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:30:40,641 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-08 09:30:51,476 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:30:52,062 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-08 09:31:00,367 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:31:00,418 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621117 (rel: 6.90e-05) 0.00292494
2015-06-08 09:31:07,163 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:31:07,202 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621113 (rel: 7.79e-06) 0.00143876
2015-06-08 09:31:12,756 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:31:12,787 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621109 (rel: 5.72e-06) 0.000793140
2015-06-08 09:31:18,222 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:31:18,257 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 2.25e-06) 0.000404889
2015-06-08 09:31:28,889 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:31:28,992 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 1.59e-07) 0.000356804
2015-06-08 09:31:38,571 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:31:38,631 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.65e-07) 9.52480e-05
2015-06-08 09:31:47,947 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:31:47,979 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.45e-08) 4.18003e-05
2015-06-08 09:33:08,215 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.1663
2015-06-08 09:33:08,248 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.282524 (rel: 0.592) 0.698058
2015-06-08 09:33:15,241 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:33:15,274 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.231793 (rel: 0.180) 0.470798
2015-06-08 09:33:22,288 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:33:22,322 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.142279 (rel: 0.386) 0.336775
2015-06-08 09:33:33,071 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.5787125657300471 fval: 0.07905322216581365 rhs: 0.14226911184209523 cdd: -0.006620593534487217
2015-06-08 09:33:33,084 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.5787
2015-06-08 09:33:33,120 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0790532 (rel: 0.444) 0.191460
2015-06-08 09:33:38,492 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:33:38,525 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0721759 (rel: 0.0870) 0.191699
2015-06-08 09:33:43,573 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:33:43,605 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0689945 (rel: 0.0441) 0.115504
2015-06-08 09:33:48,694 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:33:49,150 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0668777 (rel: 0.0307) 0.0964982
2015-06-08 09:33:54,384 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:33:54,865 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0645008 (rel: 0.0355) 0.0823155
2015-06-08 09:34:06,426 INFO  breeze.optimize.StrongWolfeLineSearch [main] - Line search t: 0.6737262165993805 fval: 0.06311494181031818 rhs: 0.06450053961240876 cdd: -6.850664848265972E-4
2015-06-08 09:34:06,439 INFO  breeze.optimize.LBFGS [main] - Step Size: 0.6737
2015-06-08 09:34:06,889 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0631149 (rel: 0.0215) 0.0767918
2015-06-08 09:34:16,483 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:34:16,572 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0629524 (rel: 0.00258) 0.0771088
2015-06-08 09:34:22,293 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:34:22,324 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0623323 (rel: 0.00985) 0.0244864
2015-06-08 09:34:31,026 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:34:31,105 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621893 (rel: 0.00229) 0.0142869
2015-06-08 09:34:39,388 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:34:39,421 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621376 (rel: 0.000832) 0.0108254
2015-06-08 09:34:45,300 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-06-08 09:34:45,322 INFO  io.prediction.tools.console.App$ [main] -            MyTextApp |   21 | erIe31WK20AnVQL3uX7D6IBvNe1S8Rj2DFRcGGvnnSdvcjTgJyO8ydufR3bmtiNv | 
2015-06-08 09:34:45,325 INFO  io.prediction.tools.console.App$ [main] -             SpamDemo |   13 | DfRBr0T06yA4yX2B1zdI2QwqQL6zCeHp68FeRUgzQPramaQAcLfo4VAHGcKL8kc7 | 
2015-06-08 09:34:45,327 INFO  io.prediction.tools.console.App$ [main] -                 test |   14 | BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH | 
2015-06-08 09:34:45,328 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-06-08 09:34:48,782 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:34:48,817 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621197 (rel: 0.000287) 0.00445652
2015-06-08 09:34:55,950 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:34:55,981 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621160 (rel: 5.95e-05) 0.00316097
2015-06-08 09:35:02,329 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:35:02,370 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621117 (rel: 6.90e-05) 0.00292494
2015-06-08 09:35:11,176 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:35:11,223 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621113 (rel: 7.79e-06) 0.00143876
2015-06-08 09:35:15,190 INFO  io.prediction.tools.console.Console$ [main] - Creating Event Server at 0.0.0.0:7070
2015-06-08 09:35:19,114 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:35:19,755 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621109 (rel: 5.72e-06) 0.000793140
2015-06-08 09:35:19,976 INFO  spray.can.server.HttpListener [EventServerSystem-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:7070
2015-06-08 09:35:19,977 INFO  io.prediction.data.api.EventServerActor [EventServerSystem-akka.actor.default-dispatcher-2] - Bound received. EventServer is ready.
2015-06-08 09:35:26,529 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:35:26,567 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 2.25e-06) 0.000404889
2015-06-08 09:35:35,159 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:35:35,200 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621108 (rel: 1.59e-07) 0.000356804
2015-06-08 09:35:41,920 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:35:41,955 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.65e-07) 9.52480e-05
2015-06-08 09:35:50,830 INFO  breeze.optimize.LBFGS [main] - Step Size: 1.000
2015-06-08 09:35:50,862 INFO  breeze.optimize.LBFGS [main] - Val and Grad Norm: 0.0621107 (rel: 2.45e-08) 4.18003e-05
2015-06-08 09:35:50,925 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.LRModel does not support data sanity check. Skipping check.
2015-06-08 09:35:50,926 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-06-08 09:35:50,927 INFO  io.prediction.controller.Engine [main] - engineInstanceId=af88299d-4e1a-4851-9292-21ffed655748
2015-06-08 09:35:50,960 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-06-08 09:35:54,477 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-06-08 09:35:54,485 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-06-08 09:36:00,325 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateServer --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engineInstanceId af88299d-4e1a-4851-9292-21ffed655748 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 09:36:03,599 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to org.template.textclassification.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-06-08 09:36:07,357 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-08 09:36:07,550 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50160]
2015-06-08 09:36:08,642 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Using persisted model
2015-06-08 09:36:08,644 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Loaded model org.template.textclassification.LRModel for algorithm org.template.textclassification.LRAlgorithm
2015-06-08 09:36:08,660 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-3] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-06-08 09:36:08,716 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-5] - Nothing at http://0.0.0.0:8000
2015-06-08 09:36:10,197 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-5] - Bound to /0.0.0.0:8000
2015-06-08 09:36:10,198 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
2015-06-08 09:37:39,443 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:37:39,515 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 09:37:39,516 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 09:37:39,517 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 09:37:39,517 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 09:37:57,564 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:37:57,743 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 09:37:57,743 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 09:37:57,746 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 09:37:57,749 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 09:39:31,024 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 09:39:31,025 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 09:39:31,037 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 09:39:31,037 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 09:39:33,496 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 09:39:33,538 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 09:40:25,221 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:40:26,079 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 09:40:28,522 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-08 09:40:28,607 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:40:28,797 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-08 09:40:28,797 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-08 09:40:28,798 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:40:28,801 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-08 09:40:28,806 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-08 09:40:28,807 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-08 09:40:29,802 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-08 09:40:30,043 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50187]
2015-06-08 09:40:31,025 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-08 09:40:31,026 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@3ce443f9
2015-06-08 09:40:31,027 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@62b790a5
2015-06-08 09:40:31,027 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@2806d6da)
2015-06-08 09:40:31,028 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-08 09:40:32,192 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-08 09:40:54,945 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-08 09:41:47,060 ERROR org.apache.spark.executor.Executor [Executor task launch worker-3] - Exception in task 1.0 in stage 9.0 (TID 37)
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:68)
	at java.lang.StringBuilder.<init>(StringBuilder.java:89)
	at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3047)
	at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2867)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1639)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
2015-06-08 09:41:47,060 ERROR org.apache.spark.executor.Executor [Executor task launch worker-1] - Exception in task 3.0 in stage 9.0 (TID 39)
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:338)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap.updated(HashMap.scala:54)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-08 09:41:47,060 ERROR akka.actor.ActorSystemImpl [sparkDriver-akka.actor.default-dispatcher-18] - exception on LARS’ timer thread
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at akka.dispatch.AbstractNodeQueue.<init>(AbstractNodeQueue.java:22)
	at akka.actor.LightArrayRevolverScheduler$TaskQueue.<init>(Scheduler.scala:443)
	at akka.actor.LightArrayRevolverScheduler$$anon$8.nextTick(Scheduler.scala:409)
	at akka.actor.LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:375)
	at java.lang.Thread.run(Thread.java:745)
2015-06-08 09:41:47,066 ERROR akka.actor.ActorSystemImpl [sparkDriver-akka.actor.default-dispatcher-18] - Uncaught fatal error from thread [sparkDriver-scheduler-1] shutting down ActorSystem [sparkDriver]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at akka.dispatch.AbstractNodeQueue.<init>(AbstractNodeQueue.java:22)
	at akka.actor.LightArrayRevolverScheduler$TaskQueue.<init>(Scheduler.scala:443)
	at akka.actor.LightArrayRevolverScheduler$$anon$8.nextTick(Scheduler.scala:409)
	at akka.actor.LightArrayRevolverScheduler$$anon$8.run(Scheduler.scala:375)
	at java.lang.Thread.run(Thread.java:745)
2015-06-08 09:41:48,054 WARN  org.apache.spark.scheduler.TaskSetManager [task-result-getter-1] - Lost task 1.0 in stage 9.0 (TID 37, localhost): java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:68)
	at java.lang.StringBuilder.<init>(StringBuilder.java:89)
	at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3047)
	at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2867)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1639)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)

2015-06-08 09:41:48,056 ERROR org.apache.spark.scheduler.TaskSetManager [task-result-getter-1] - Task 1 in stage 9.0 failed 1 times; aborting job
2015-06-08 09:41:48,057 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-3] - Uncaught exception in thread Thread[Executor task launch worker-3,5,main]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at java.lang.AbstractStringBuilder.<init>(AbstractStringBuilder.java:68)
	at java.lang.StringBuilder.<init>(StringBuilder.java:89)
	at java.io.ObjectInputStream$BlockDataInputStream.readUTFBody(ObjectInputStream.java:3047)
	at java.io.ObjectInputStream$BlockDataInputStream.readUTF(ObjectInputStream.java:2867)
	at java.io.ObjectInputStream.readString(ObjectInputStream.java:1639)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1342)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
2015-06-08 09:41:48,058 ERROR org.apache.spark.util.SparkUncaughtExceptionHandler [Executor task launch worker-1] - Uncaught exception in thread Thread[Executor task launch worker-1,5,main]
java.lang.OutOfMemoryError: GC overhead limit exceeded
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:338)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap$HashTrieMap.updated0(HashMap.scala:326)
	at scala.collection.immutable.HashMap.updated(HashMap.scala:54)
	at scala.collection.immutable.HashMap$SerializationProxy.readObject(HashMap.scala:516)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1896)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1993)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1918)
2015-06-08 09:42:00,885 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 09:42:01,765 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 09:42:04,318 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-08 09:42:04,409 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:42:04,604 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-08 09:42:04,605 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-08 09:42:04,605 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 09:42:04,608 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-08 09:42:04,614 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-08 09:42:04,615 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-08 09:42:05,618 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-06-08 09:42:05,858 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50206]
2015-06-08 09:42:06,843 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-08 09:42:06,843 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@7c52fc81
2015-06-08 09:42:06,844 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@766a49c7
2015-06-08 09:42:06,844 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@6bccd036)
2015-06-08 09:42:06,845 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-08 09:42:08,001 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-08 09:42:26,250 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-08 09:42:46,542 WARN  com.github.fommil.netlib.BLAS [main] - Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
2015-06-08 09:42:46,542 WARN  com.github.fommil.netlib.BLAS [main] - Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
2015-06-08 09:42:46,543 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.NBModel does not support data sanity check. Skipping check.
2015-06-08 09:42:46,544 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-06-08 09:42:46,545 INFO  io.prediction.controller.Engine [main] - engineInstanceId=cf474d23-3ddd-475a-9f29-8e19c203d29e
2015-06-08 09:42:46,564 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-06-08 09:42:50,795 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-06-08 09:42:50,816 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-06-08 09:42:56,726 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateServer --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engineInstanceId cf474d23-3ddd-475a-9f29-8e19c203d29e --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 09:42:59,893 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-4] - Non-empty parameters supplied to org.template.textclassification.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-06-08 09:43:02,543 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-08 09:43:02,718 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50231]
2015-06-08 09:43:03,793 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Using persisted model
2015-06-08 09:43:03,795 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-4] - Loaded model org.template.textclassification.NBModel for algorithm org.template.textclassification.NBAlgorithm
2015-06-08 09:43:03,810 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-06-08 09:43:03,835 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-5] - Nothing at http://0.0.0.0:8000
2015-06-08 09:43:05,402 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-3] - Bound to /0.0.0.0:8000
2015-06-08 09:43:05,403 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-4] - Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
2015-06-08 10:05:40,412 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/stopwords.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:05:44,151 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-08 10:05:44,405 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50284]
2015-06-08 10:05:47,787 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:05:47,787 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:05:55,403 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/emails.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:05:58,388 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-08 10:05:58,584 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50291]
2015-06-08 10:06:03,918 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:06:03,919 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:07:48,692 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:07:48,770 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 10:07:48,771 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 10:07:48,774 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 10:07:48,775 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 10:08:11,929 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 10:08:11,929 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 10:08:11,937 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 10:08:11,937 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 10:08:12,698 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 10:08:12,717 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 10:08:13,564 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:08:14,461 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:08:45,781 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:08:45,850 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 10:08:45,851 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 10:08:45,851 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 10:08:45,852 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 10:08:52,930 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 10:08:52,930 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 10:08:52,937 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 10:08:52,937 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 10:08:53,666 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 10:08:53,689 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 10:08:54,508 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:08:55,372 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:09:29,571 INFO  io.prediction.tools.console.App$ [main] -                 Name |   ID |                                                       Access Key | Allowed Event(s)
2015-06-08 10:09:29,577 INFO  io.prediction.tools.console.App$ [main] -            MyTextApp |   21 | erIe31WK20AnVQL3uX7D6IBvNe1S8Rj2DFRcGGvnnSdvcjTgJyO8ydufR3bmtiNv | 
2015-06-08 10:09:29,580 INFO  io.prediction.tools.console.App$ [main] -             SpamDemo |   13 | DfRBr0T06yA4yX2B1zdI2QwqQL6zCeHp68FeRUgzQPramaQAcLfo4VAHGcKL8kc7 | 
2015-06-08 10:09:29,581 INFO  io.prediction.tools.console.App$ [main] -                 test |   14 | BcOjSYQIMZr58BzkBjBsrpepz89F9ct9Nra1WgxDgbu2jt3YZXee4HKo5sAsUCoH | 
2015-06-08 10:09:29,582 INFO  io.prediction.tools.console.App$ [main] - Finished listing 3 app(s).
2015-06-08 10:10:26,203 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:10:26,270 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 10:10:26,271 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 10:10:26,273 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 10:10:26,274 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 10:10:33,323 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 10:10:33,323 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 10:10:33,330 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 10:10:33,330 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 10:10:34,075 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 10:10:34,093 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 10:10:34,894 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:10:35,746 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:10:51,588 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-08 10:10:51,590 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyTextApp
2015-06-08 10:10:51,590 INFO  io.prediction.tools.console.App$ [main] -       App ID: 21
2015-06-08 10:10:51,590 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-08 10:10:53,746 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 21
2015-06-08 10:10:53,754 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 21.
2015-06-08 10:10:53,756 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-08 10:11:12,708 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/stopwords.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:11:15,715 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-08 10:11:15,922 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50333]
2015-06-08 10:11:18,171 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:11:18,172 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:11:29,444 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input emails.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:11:32,475 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-08 10:11:32,648 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50339]
2015-06-08 10:12:11,668 ERROR io.prediction.tools.console.App$ [main] - App MytEXTaPP does not exist. Aborting.
2015-06-08 10:12:17,929 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-08 10:12:17,931 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyTextApp
2015-06-08 10:12:17,931 INFO  io.prediction.tools.console.App$ [main] -       App ID: 21
2015-06-08 10:12:17,932 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-08 10:12:19,781 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 21
2015-06-08 10:12:19,787 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 21.
2015-06-08 10:12:19,788 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-08 10:12:33,425 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/stopwords.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:12:36,531 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-08 10:12:36,725 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50345]
2015-06-08 10:12:39,328 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:12:39,329 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:12:52,143 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/emails.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:12:55,234 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-06-08 10:12:55,430 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50352]
2015-06-08 10:13:00,691 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:13:00,692 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:13:08,413 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:13:08,489 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 10:13:08,489 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 10:13:08,490 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 10:13:08,491 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 10:13:15,500 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 10:13:15,501 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 10:13:15,507 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 10:13:15,507 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 10:13:16,279 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 10:13:16,298 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 10:13:17,102 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:13:17,992 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:15:41,889 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-08 10:15:41,891 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyTextApp
2015-06-08 10:15:41,892 INFO  io.prediction.tools.console.App$ [main] -       App ID: 21
2015-06-08 10:15:41,892 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-08 10:15:44,197 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 21
2015-06-08 10:15:44,203 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 21.
2015-06-08 10:15:44,204 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-08 10:15:56,144 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/stopwords.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:15:59,101 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-06-08 10:15:59,289 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50364]
2015-06-08 10:16:01,808 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:16:01,809 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:16:19,506 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/emails.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:16:22,541 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-06-08 10:16:22,720 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50371]
2015-06-08 10:16:28,158 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:16:28,159 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:16:40,938 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:16:41,009 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 10:16:41,010 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 10:16:41,011 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 10:16:41,011 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 10:16:48,220 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 10:16:48,220 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 10:16:48,226 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 10:16:48,227 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 10:16:48,978 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 10:16:48,996 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 10:16:49,808 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:16:50,656 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 2G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:18:25,421 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-08 10:18:25,423 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyTextApp
2015-06-08 10:18:25,423 INFO  io.prediction.tools.console.App$ [main] -       App ID: 21
2015-06-08 10:18:25,423 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-08 10:18:27,108 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 21
2015-06-08 10:18:27,113 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 21.
2015-06-08 10:18:27,115 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-08 10:19:16,712 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/stopwords.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:19:19,699 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Starting remoting
2015-06-08 10:19:19,889 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-2] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50394]
2015-06-08 10:19:22,434 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:19:22,435 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:19:29,112 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input data/emails1.json.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:19:34,168 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/emails1.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:19:37,225 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-06-08 10:19:37,422 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50401]
2015-06-08 10:19:41,411 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:19:41,412 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:19:47,571 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:19:47,645 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 10:19:47,645 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 10:19:47,646 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 10:19:47,647 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 10:20:04,161 INFO  io.prediction.tools.console.Console$ [main] - Build finished successfully.
2015-06-08 10:20:04,162 INFO  io.prediction.tools.console.Console$ [main] - Looking for an engine...
2015-06-08 10:20:04,172 INFO  io.prediction.tools.console.Console$ [main] - Found org-template-textclassification_2.10-0.1-SNAPSHOT.jar
2015-06-08 10:20:04,172 INFO  io.prediction.tools.console.Console$ [main] - Found org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar
2015-06-08 10:20:04,941 INFO  io.prediction.tools.RegisterEngine$ [main] - Registering engine IWXc010GfB2IiJT8mdsNGoRHegbLgBCr 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49
2015-06-08 10:20:04,961 INFO  io.prediction.tools.console.Console$ [main] - Your engine is ready for training.
2015-06-08 10:20:05,775 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:20:06,660 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:20:30,983 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-08 10:20:30,985 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyTextApp
2015-06-08 10:20:30,985 INFO  io.prediction.tools.console.App$ [main] -       App ID: 21
2015-06-08 10:20:30,986 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-08 10:20:33,004 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 21
2015-06-08 10:20:33,010 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 21.
2015-06-08 10:20:33,011 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-08 10:20:51,533 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/emails.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:20:54,605 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-08 10:20:54,815 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50413]
2015-06-08 10:21:00,105 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:21:00,106 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:21:10,460 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:21:11,312 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:27:26,493 INFO  io.prediction.tools.console.App$ [main] - Data of the following app (default channel only) will be deleted. Are you sure?
2015-06-08 10:27:26,494 INFO  io.prediction.tools.console.App$ [main] -     App Name: MyTextApp
2015-06-08 10:27:26,495 INFO  io.prediction.tools.console.App$ [main] -       App ID: 21
2015-06-08 10:27:26,495 INFO  io.prediction.tools.console.App$ [main] -  Description: None
2015-06-08 10:27:29,645 INFO  io.prediction.tools.console.App$ [main] - Removed Event Store for this app ID: 21
2015-06-08 10:27:29,651 INFO  io.prediction.tools.console.App$ [main] - Initialized Event Store for this app ID: 21.
2015-06-08 10:27:29,653 INFO  io.prediction.tools.console.App$ [main] - Done.
2015-06-08 10:27:50,500 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/stopwords.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:27:53,506 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Starting remoting
2015-06-08 10:27:53,688 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-5] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50528]
2015-06-08 10:27:56,280 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:27:56,280 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:28:31,146 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.tools.imprt.FileToEvents --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --appid 21 --input file:/Users/Marco/template-scala-parallel-textclassification/data/emails.json --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:28:34,161 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Starting remoting
2015-06-08 10:28:34,343 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-3] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50538]
2015-06-08 10:28:39,438 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Events are imported.
2015-06-08 10:28:39,439 INFO  io.prediction.tools.imprt.FileToEvents$ [main] - Done.
2015-06-08 10:28:47,839 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:28:47,904 INFO  io.prediction.tools.console.Console$ [main] - Using command '/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt' at the current working directory to build.
2015-06-08 10:28:47,906 INFO  io.prediction.tools.console.Console$ [main] - If the path above is incorrect, this process will fail.
2015-06-08 10:28:47,908 INFO  io.prediction.tools.console.Console$ [main] - Uber JAR disabled. Making sure lib/pio-assembly-0.9.4-SNAPSHOT.jar is absent.
2015-06-08 10:28:47,908 INFO  io.prediction.tools.console.Console$ [main] - Going to run: /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/sbt/sbt  package assemblyPackageDependency
2015-06-08 10:29:07,453 INFO  io.prediction.tools.console.Console$ [main] - Using existing engine manifest JSON at /Users/Marco/template-scala-parallel-textclassification/manifest.json
2015-06-08 10:29:08,624 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --driver-memory 3G --class io.prediction.workflow.CreateWorkflow --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engine-id IWXc010GfB2IiJT8mdsNGoRHegbLgBCr --engine-version 7f7fd057ec1f7fa1ae31d1be8f331b95f933dd49 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --verbosity 0 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:29:11,780 INFO  io.prediction.controller.Engine [main] - Extracting datasource params...
2015-06-08 10:29:11,929 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 10:29:12,268 INFO  io.prediction.controller.Engine [main] - Datasource params: (,DataSourceParams(MyTextApp,Some(3)))
2015-06-08 10:29:12,269 INFO  io.prediction.controller.Engine [main] - Extracting preparator params...
2015-06-08 10:29:12,269 INFO  io.prediction.workflow.WorkflowUtils$ [main] - No 'name' is found. Default empty String will be used.
2015-06-08 10:29:12,274 INFO  io.prediction.controller.Engine [main] - Preparator params: (,PreparatorParams(1,2,0.0,0.85))
2015-06-08 10:29:12,288 INFO  io.prediction.controller.Engine [main] - Extracting serving params...
2015-06-08 10:29:12,290 INFO  io.prediction.controller.Engine [main] - Serving params: (,Empty)
2015-06-08 10:29:13,517 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Starting remoting
2015-06-08 10:29:13,820 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-4] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50549]
2015-06-08 10:29:15,488 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train
2015-06-08 10:29:15,488 INFO  io.prediction.controller.Engine$ [main] - DataSource: org.template.textclassification.DataSource@3ce443f9
2015-06-08 10:29:15,489 INFO  io.prediction.controller.Engine$ [main] - Preparator: org.template.textclassification.Preparator@62b790a5
2015-06-08 10:29:15,489 INFO  io.prediction.controller.Engine$ [main] - AlgorithmList: List(org.template.textclassification.NBAlgorithm@2806d6da)
2015-06-08 10:29:15,490 INFO  io.prediction.controller.Engine$ [main] - Data santiy check is on.
2015-06-08 10:29:17,000 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.TrainingData supports data sanity check. Performing check.
2015-06-08 10:29:34,388 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.PreparedData does not support data sanity check. Skipping check.
2015-06-08 10:29:52,394 WARN  com.github.fommil.netlib.BLAS [main] - Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
2015-06-08 10:29:52,394 WARN  com.github.fommil.netlib.BLAS [main] - Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
2015-06-08 10:29:52,395 INFO  io.prediction.controller.Engine$ [main] - org.template.textclassification.NBModel does not support data sanity check. Skipping check.
2015-06-08 10:29:52,396 INFO  io.prediction.controller.Engine$ [main] - EngineWorkflow.train completed
2015-06-08 10:29:52,396 INFO  io.prediction.controller.Engine [main] - engineInstanceId=03ef8c30-6d94-4180-a008-d54709d04417
2015-06-08 10:29:52,419 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Inserting persistent model
2015-06-08 10:29:56,385 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Updating engine instance
2015-06-08 10:29:56,399 INFO  io.prediction.workflow.CoreWorkflow$ [main] - Training completed successfully.
2015-06-08 10:35:16,841 INFO  io.prediction.tools.Runner$ [main] - Submission command: /usr/local/Cellar/apache-spark/1.3.1_1/bin/spark-submit --class io.prediction.workflow.CreateServer --jars file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org-template-textclassification_2.10-0.1-SNAPSHOT.jar,file:/Users/Marco/template-scala-parallel-textclassification/target/scala-2.10/org.template.textclassification-assembly-0.1-SNAPSHOT-deps.jar --files file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf/log4j.properties --driver-class-path /Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf file:/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/lib/pio-assembly-0.9.4-SNAPSHOT.jar --engineInstanceId 03ef8c30-6d94-4180-a008-d54709d04417 --engine-variant file:/Users/Marco/template-scala-parallel-textclassification/engine.json --ip 0.0.0.0 --port 8000 --event-server-ip 0.0.0.0 --event-server-port 7070 --json-extractor Both --env PIO_ENV_LOADED=1,PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta,PIO_FS_BASEDIR=/Users/Marco/.pio_store,PIO_HOME=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT,PIO_FS_ENGINESDIR=/Users/Marco/.pio_store/engines,PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio,PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=PGSQL,PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event,PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio,PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc,PIO_FS_TMPDIR=/Users/Marco/.pio_store/tmp,PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio,PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model,PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=PGSQL,PIO_CONF_DIR=/Users/Marco/PredictionIO/PredictionIO-0.9.4-SNAPSHOT/conf
2015-06-08 10:35:19,868 WARN  io.prediction.workflow.WorkflowUtils$ [pio-server-akka.actor.default-dispatcher-3] - Non-empty parameters supplied to org.template.textclassification.Serving, but its constructor does not accept any arguments. Stubbing with empty parameters.
2015-06-08 10:35:24,651 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-8] - Starting remoting
2015-06-08 10:35:24,841 INFO  Remoting [sparkDriver-akka.actor.default-dispatcher-8] - Remoting started; listening on addresses :[akka.tcp://sparkDriver@10.0.0.30:50601]
2015-06-08 10:35:25,845 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Using persisted model
2015-06-08 10:35:25,846 INFO  io.prediction.controller.Engine [pio-server-akka.actor.default-dispatcher-3] - Loaded model org.template.textclassification.NBModel for algorithm org.template.textclassification.NBAlgorithm
2015-06-08 10:35:25,859 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-5] - Undeploying any existing engine instance at http://0.0.0.0:8000
2015-06-08 10:35:25,894 WARN  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-5] - Nothing at http://0.0.0.0:8000
2015-06-08 10:35:27,054 INFO  spray.can.server.HttpListener [pio-server-akka.actor.default-dispatcher-2] - Bound to /0.0.0.0:8000
2015-06-08 10:35:27,054 INFO  io.prediction.workflow.MasterActor [pio-server-akka.actor.default-dispatcher-2] - Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
